我一直在使用多个模块在 Java 上开发这个项目。很长一段时间以来,我偶尔会遇到“java: Out Of Memory”错误!我对这个“常见”错误还很陌生,想知道解决此类错误的一般方法。
此外,是否有业界接受的标准工具来帮助找出此类错误的原因?
我项目中的模块包括来自第三方(使用网络服务)的每分钟轮询、多线程等等。然而,这只是一个指针,我寻求一种通用方法,而不是针对我的项目的特定方法。
谢谢。
最佳答案
有时您只是有一个使用大量内存的类,您需要增加堆大小或制定更节省空间的算法。其他时候是泄漏,您需要尊重对象。
- 运行
jvisualvm
(它包含在 JDK 中)。 - 连接到您的流程并尝试重新创建 内存不足错误,同时密切关注堆大小。
- 当内存变大时执行堆转储。搜索 按大小计算最大的物体 - 通常这会给你带来罪魁祸首 类。
- 查看依赖项以查看持有引用的内容。如果是内存泄漏,请确保取消引用不需要的对象。
关于java:内存不足错误的一般方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367193/