JAVA内存溢出:
1.堆溢出 java heap space
创建对象时,内存不足
2.方法区内存溢出:permgem space
创建的类太多
3.线程栈溢出:stackoverflow error
递归太深,方法调用过多
频繁GC问题或内存溢出问题
一、使用jps查看线程ID
二、使用jstat -gc 3331 250 20 查看gc情况,一般比较关注PERM区的情况,查看GC的增长情况。
三、使用jstat -gccause:额外输出上次GC原因
四、使用jmap -dump:format=b,file=heapDump 3331生成堆转储文件
五、使用jhat或者可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)分析堆情况。
六、结合代码解决内存溢出或泄露问题。
死锁问题
一、使用jps查看线程ID
二、使用jstack 3331:查看线程情况
堆栈信息分析
wait on monitor entry: 被阻塞的,肯定有问题
runnable : 注意IO线程
in Object.wait(): 注意非线程池等待
本文详细解析了JAVA中常见的内存溢出问题,包括堆溢出、方法区内存溢出及线程栈溢出,并提供了诊断与解决策略。通过jps、jstat、jmap等工具分析GC情况,定位内存泄露或频繁GC的原因。同时,介绍了如何使用可视化工具深入分析堆状态,最终结合代码优化解决内存问题。
1942

被折叠的 条评论
为什么被折叠?



