繁体   English   中英

用Java进行内存管理,加载大文件,如何取消分配对象?

[英]Memory management in Java, loading large files, how to deallocate objects?

我正在编写一个解析器,该解析器可以加载400 mb以上的较大文件,并以约32 mb的块进行解析,然后将解析后的数据保存到磁盘。 我通过使用带有同步列表的线程来保存数据,该线程会定期检查列表并保存其中的所有内容。 然后,我从列表中删除该元素。 但是,VM内存使用量继续增长。

Java虚拟机VM的内存很大时,速度非常快,但是当达到上限时,速度显然会变慢。 我可以在300 mb的内存中加载400 mb的文件,但这确实很慢。

为什么即使对于我不再使用的对象,它们也可以保留在内存中,但是可以由垃圾收集器重新分配(这确实很慢),这绝对是可以的。

如何防止堆变大?

是的,您可以:

System.gc();

并显式调用垃圾收集器。 您可以执行以下简单操作:

var = null;

您将取消分配给该变量的内存。 希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM