jvm性能调优

本文详细解析了JAVA中常见的内存溢出问题,包括堆溢出、方法区内存溢出及线程栈溢出,并提供了诊断与解决策略。通过jps、jstat、jmap等工具分析GC情况,定位内存泄露或频繁GC的原因。同时,介绍了如何使用可视化工具深入分析堆状态,最终结合代码优化解决内存问题。

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(): 注意非线程池等待

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值