我正在编写一个机器学习程序,用于处理大型数据集和其他一些相关计算。由于数据集可能非常大,因此一些计算会产生非常大的矩阵(例如29,000 x 29,000 Array{Float64,2}),并且它们需要大量的存储(RAM)。在后面的过程中,一些元素(如初始数据集)不再需要,但它们仍然在浪费内存空间。
有没有办法在某个时刻“释放”变量?或者,有没有办法共享一些硬盘部分,比如交换空间?
我试图检查一个进程实际对系统造成了多大的内存压力,但是ps、top和朋友在这方面几乎毫无用处,因为他们只报告了3项统计数据:
RES -驻留内存集仅包括物理内存中的数据页(不包括交换的页面),还包括加载的共享库VIRT -包括内核映射到内存的所有页面,包括交换页面,但也包括内存映射文件、共享库等。SHR --可能是最无用的,只包括可以共享的库所使用的内存,但据我所知,它实际上并不代表进程使用的内存,而是计算库的整个大小,即使库的一部分实际上是驻留的。在多进程计算软件中,