您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
Java程序员是如何解决内存溢出问题的?
对象,内存,线程Java程序员是如何解决内存溢出问题的?
发布时间:2020-12-06加入收藏来源:互联网点击:
回答于 2019-09-11 08:43:50
一般在java中,内存是由jvm管理,当内存占用过多,jvm会把不用的资源給释放,所以一般程序员不需要手动释放。
回答于 2019-09-11 08:43:50
工具分析是免不了的
回答于 2019-09-11 08:43:50
内存溢出一般也不容易遇见,而且Java有个好玩的东东是,好多问题,升级到最新稳定的JDK问题就自然解决了。
参考这篇:一次生产 CPU 100% 排查优化实践(https://mp.weixin.qq.com/s/c8_y5jq1SqPTe2YsgOhyZQ)
1. 找到存在问题的进程,ps aux,jps之类的命令都可以做到;
2. 根据找到的进程 ps -Hp打印出当前线程,看占用资源比较多的线程堆栈;
3. jstack打印线程堆栈信息,需要慢慢看,毕竟看起来都是正常运行着的。
内存溢出其实一般来说是阶段性的,这时就需要记录gc日志和业务日志了,根据日志来找出问题的蛛丝马迹。一般好多东西都是编程错误,或者错误的使用了大对象等。
回答于 2019-09-11 08:43:50
jmap dump堆内存,注意在生产环境使用cms gc dump会导致stop the world。dump完成后使用mat或jprofile分析。如果紧急,可以用jmap -histo导出堆使用情况,简单分析下。同时可以用jstack打出线程栈,用gceasy或者fastthread在线进行分析。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |