我无法调试问题,它可能发生的可能性有多大。 任何人都可以告诉我吗?如何调试JAVA堆中的内存不足错误
回答
简单的方法 - 您可以使用JDK中的jvisualvm。在左侧选择您的应用程序,然后在Monitoring选项卡上执行堆转储,然后您可以发现内存泄漏。你也可以在jvisualvm中运行内存分析器。
使用命令行'断点'。 几行中,添加类似
System.out.println("Made it thus far!");
或有很多循环的代码,你可以用它来确保您不会重复太多次:
System.out.println("Made it thus far! i = " + i1);
哪里i1是一个额外的循环计数器。
并将其向下和向下移动,直到出现错误而不是该打印。这将有助于确定发生错误的线路。
如果可以的话,请记住发布您的代码,因为它可以使工作变得更加简单,并且您可以在一分钟之内解决问题。
虽然它会起作用,但在抛出OutOfMemoryError之前,您很可能会看到数百万个打印输出。您也可以分析应该显示最近的方法调用的错误的堆栈跟踪。 –
@JaroslawPawlak你为什么会看到数百万?在没有意图侮辱的简单程序中,听起来像是这个开发人员的相对能力,可能不会有数百万的打印。尽管每个程序都是独一无二的*。你能举出一些简单的代码,这会导致高内存使用率,简单,并产生数百万这些打印? – Scruffy
@ TheJavaNot-So-Pro意外的无限循环,不断向集合添加元素。递归斐波那契用于大输入。 –
只是添加到这个答案 - 我最近有一个类似的问题,并设法跟踪这个问题,使用VisualVM我能够采取堆转储和确定堆中最大的对象,并从那里开始工作。 – PeterK
- 1. Java堆空间::内存不足错误
- 2. 内存不足错误Java堆空间
- 3. 内存不足错误,Java堆空间
- 4. java内存不足错误堆空间
- 5. 获取堆空间内存不足错误 - 如何使用java堆内存
- 6. 我该如何纠正“Java堆空间 - 内存不足”错误
- 7. Java堆内存不足
- 8. Java堆空间错误/内存不足错误
- 9. Eclipse堆空间(内存不足错误)
- 10. Java MergeSort - 内存不足错误:Java堆空间
- 11. Netbeans Java调试器出现内存不足错误
- 12. 内存不足的错误:Java堆空间在JMeter的未来
- 13. 的内存不足错误Java堆空间 - 与ImageIO的
- 14. 如何调试Java内存错误?
- 15. 内存不足错误 - 写入Excel时的Java堆空间
- 16. Java的内存不足的错误
- 17. 如何调试内存不足问题
- 18. solr - 内存不足的java堆空间
- 19. 的JMeter运行:Java堆空间错误:内存不足的错误
- 20. 如何在Web逻辑服务器启动时调试内存不足错误(Java堆空间)
- 21. Bitmap.createBitmap内存不足错误java
- 22. 内存不足java堆空间
- 23. Java内存不足:增加堆空间?
- 24. Java堆空间内存不足
- 25. Java内存堆错误
- 26. Java堆内存错误HTMLuint
- 27. Java堆内存错误
- 28. Node.js的堆内存不足
- 29. 如何处理内存不足错误?
- 30. OpenCV内存不足错误
很多可能性都可能导致这种情况。最有可能是Vector的一个非常大的ArrayList。没有看到你的代码很难知道。它是否有大量的课程或只有一两个? –
另外,您可以使用java的'-Xmx'标志来增加堆大小。但是,您应该尝试了解是什么导致它首先发生它是一个有问题的对象,它正在泄漏并且未被GC收集。 –
您能否提供代码?最常见的原因是尝试创建比JVM可用内存大的数据结构(集合或数组),无限循环将元素插入集合和无限递归中。 –