如何破坏 Python 对象并释放内存

我试图迭代 100,000 个图像,捕获一些图像特征,并将生成的数据框存储在磁盘上,作为一个 pickle 文件。 不幸的是,由于 RAM 的限制,我不得不将图像分割成 20,000 的块,并在将结果保存到磁盘上之前对它们执行操作。 下面编写的代码应该在开始循环处理接下来的 20,000 个图像之前保存 20,000 个图像的结果帧。 然而 -- 这似乎并没有解决我的问题,因为内存在第一个 for 循环结束时没有从 RAM 中释放 因此,在处理第 50000 条记录时,由于内存不足错误,程序崩溃。 在将对象保存到磁盘并调用垃圾收集器后,我尝试删除它们,但是 RAM 使用率似乎没有下降。 我错过了什么? # File _ list _ 1 包含 100,000 个图像 File _ list _ chunks = list (文件 _ list_chunks,20000) 对于 count,枚举 (file _ list _ chunks) 中的 f: # 让工人池 Pool = 线程池 (64) 结果 = pool.map (get_image _ features,f) # 关闭游泳池,等待工 ……

共9个回答,已解决, 标签: python pandas memory-management out-of-memory
内存使用量高-慢应用程序响应: 已使用内存值不减少可用内存值不增加

当应用程序在使用几分钟,然后它慢慢增加使用的内存值和减小免费内存值。几分钟后应用程序变得非常缓慢。为什么它不释放记忆。 系统配置: * CPU: 英特尔 (R) 至强 (R) 白金 8175 M CPU @ 2.50 GHz (处理器数量: 4 个/cpu 内核数量: 8 个) * 内存: 30 GB * 操作系统: CentOS-7 应用配置: * Java 版本 “1.8.0 _ 171” -- 构建 1.8.0 _ 171-b11 * Apache tomcat 7.0.55 Tomcat 设置 enter image description here [https://i.stack.imgur.com/nyXV0.png] [https://i.stack.imgur.com/nyXV0.png] 自由-h 命令 enter image description here [https://i.stack.imgur.com/Uqvgz.png] [https://i.stack.imgur.com/Uqvgz.png] Top 命令 enter image descri ……

共5个回答, 标签: java memory memory-leaks out-of-memory tomcat7
在 python 中找到不在另一个文件中的所有数字

有两个文件,比如 FileA 和 FileB,我们需要找到 FileA 中没有的所有数字。FileA 中的所有数字都被排序,FileB 中的所有数字都被排序。例如, 输入: FileA = [1,2,3,4,5,.] FileB = [1,2,4,6,.] 输出: [2,5,.] 内存非常有限,甚至一个完整的文件也不能一次加载到内存中。还需要线性或较小的时间复杂性。 所以,如果文件足够小,可以放在内存中, 我们可以加载它们,并将其内容初始化为两组,然后采用一组差,这样就可以在 O (1) 或恒定时间复杂度中解决问题。 设置 (contentsofFileA)-设置 (contentsofFileB) 但是由于文件太大,它们将无法完全加载到内存中,因此这是不可能的。 此外,另一种方法是在批处理中使用暴力方法。因此,我们从 FileA 加载一个或一批数据,然后从 FileB 加载一批数据,然后比较它,然后从 FileB 加载下一个数据块,依此类推。然后,在检查 FileA 块中的所有元素后,从 FileA 加载下一批元素,这将继续。但是这将会产生 O (n2) 或二次时间复杂度,对于条目很 ……

共4个回答,已解决, 标签: python arrays file out-of-memory
并行无限 Java 流内存不足

我试图理解为什么下面的 Java 程序给出了一个OutOfMemoryError, while the corresponding program without .parallel()没有。 系统输出打印流 .迭代 (1,i-> i 1) 。并行 () 。FlatMap (n-> Stream.iterate (n,i-> i n) 。MapToInt (整数:: intValue) .限制 (100_000_000) 。和 () ); 我有两个问题: 1. 这个程序的预期输出是什么? 没有.parallel() it seems that this simply outputs sum(1 2 3 ...)这意味着它只是 “卡住” 在 flatMap 中的第一个流,这是有道理的。 并行我不知道是否有一个预期的行为,但我的猜测是,它以某种方式交错第一n or so streams, where n 是平行工人的数量。基于分块/缓冲行为,它也可能略有不同。 2. 是什么导致它内存不足?我特别试图了解这些流是如何在引擎盖下实现的 ……

共3个回答,已解决, 标签: java java-stream out-of-memory lazy-evaluation