我目前使用活动监视器,然而,这产生了严重的矛盾。 我有一个正在运行的程序,建立并存储在双精度60×100000阵列的10个维矢量GSL,并且另一个6×60阵列的16807个维GSL向量。
我在编写C ++,我使用的GSL库进出方便了分钟。
GSL载体基本上是双精度数据和指针的数组,所以我认为它应该是准确测量在刚刚双精度组件方面的使用。
现在,通过我的计算,我应该围绕存储500 MB的数据(每双8个字节)。 然而,我的MacOS活动监控告诉我,我存储“真正的”内存1.4 GB。 现在,这可能是衡量内存使用一个非常不准确的方法,但它在预测时,我的机器将使用RAM使用互换切换,并且变得很慢不准确! 当我增加第一数组的大小至60×40万,例如,用完了的存储器和一切都停止死。
因此,它是我的数学是错误的,或者是有什么与我的计算机估计它是多么的数据存储方式的问题呢?
编辑:或者是一些关于我存储指针的方式进行基于数据交代不清的分配器进入大规模过度补偿的存储需求?
编辑2:该数据被存储在stl::vector< stl::vector<gsl::gsl_vector * > >
结构。 我读了征不使用动态内存分配:这可能导致在内存管理显着改善?