垃圾收集时间长

问题描述 投票:0回答:1

我们的客户在 Java Web 应用程序(JAVA 8、Tomcat 9)中经历了很长的垃圾收集时间,最终应用程序被无限期挂起。

Dynatrace
性能管理工具日志经常抛出
Long garbage collection time
错误。服务器 RAM 为 32GB,堆大小从 1GB 增加到 4GB,仍然会抛出错误,但频率比以前低。 JAVA 8默认使用并行收集器,那么还有什么可以配置来改善GC时间呢?较长的 GC 时间表明需要回收大量内存对象,因此进一步添加内存可能并不理想。

设置

The maximum pause time goal
参数有什么用吗?
-XX:MaxGCPauseMillis=<N>

java garbage-collection heap-memory dynatrace
1个回答
0
投票

您首先应该了解什么是分配过多内存。

有很多不同的事情可以关联,包括内存泄漏、不必要的高内存分配、循环内的大量分配,甚至应用程序的实际内存需求比您想象的要高。

由于您似乎有 Dynatrace 可用,因此您可以使用 “内存分析” 来分析并查明哪些代码位置实际上导致了此处的大量 GC 时间,也许有一些简单的优化来减少内存分配。

© www.soinside.com 2019 - 2024. All rights reserved.