jvm 内存分析,服务器内存不足会导致 Java 程序卡死吗

2018-12-04 15:51:07 +08:00
 Asice

visualVM 信息 tcp 信息,排除端口占用满了的问题

因为卡的时候我看了控制台日志是服务器在 api 请求,然后日志打印也是卡住,2 秒打印一条信息。
之前一直在 GC 导致 cpu100%,调了下 jvm 分配 5g,总 8g。mysql 和服务器用剩余 3g。
现在 cpu 降到 20-50 了,但是还是卡死,内存不足的原因吗? jvm 内存给多了?

5037 次点击
所在节点    Java
24 条回复
luosuosile
2018-12-05 12:55:19 +08:00
@q397064399 嗯,有什么可以查看老年代里的对象名的方法呢。

因为基本一直要用的老家伙占满了老年代空间,新的想进来的进不来所以频繁 gc。没毛病
szq8014
2018-12-06 09:50:34 +08:00
@Asice
jstack  就看看有没有主要的线程在等锁导致卡

内存方面可以试试:

装个 visual GC  插件方便看各代的内存状况


还能对内存进行采样,然后过滤包名看看啥对象多



然后把图发上来给大家围观下
dezhou9
2018-12-23 00:06:33 +08:00
学习了
Asice
2018-12-25 18:29:12 +08:00
结帖,循环中没有休眠,虽然不是死循环,但是某个时间点线程一多会把带宽占满(多线程中转图片)。
所以虽然是多线程引起的,但是不是 cpu100%问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX