Java 应用启动很慢,咋分析和优化?

2021-05-29 10:03:34 +08:00
 x97bgt

现在接手的 java 应用,启动要 3+分钟,加载 9000+个类,给虚拟机分配 20+G 的内存才够用。

我在想有没有什么方法能优化的,比如提升重启速度,或者减少所需内存。

用了 arthas 和 jconsole 一通乱看,分析不出所以然来。有啥好的分析方法或思路,能找到优化的突破口么?

4814 次点击
所在节点    Java
24 条回复
luozic
2021-05-30 14:39:36 +08:00
20Gn 内存,这加载的数据,构建的对象也太多了吧。 启动中间有 gc 没有? jprofile heapdump 如果是使用的是 openjdk 11 以上的,可以打开 flight,通过 jmc 查看事件日志。在 jdk 8 这是一个商业特性,龟壳买的 JRockit 移植到 hostspot 。。。
luozic
2021-05-30 14:42:25 +08:00
@luozic 搜到的一个介绍 java flight recorder 的介绍 blog https://cs.xieyonghui.com/java/java-flight-recorder_72.html
assiadamo
2021-05-31 12:03:17 +08:00
9000 个类不算多的,但估计是启动中有 gc 了,在启动参数中添加 gc 日志,具体看问题在哪
blessingsi
2021-05-31 12:44:17 +08:00
这种项目具体哪部分耗时,维护者心里应该有点数吧。启动的时候加载了大量数据,依赖了外部的 xxx 资源之类的。
另外就是看下 gc,分配 20g 内存大概率是会触发 gc 的。

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

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

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

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

© 2021 V2EX