6 java performance garbage-collection
我注意到我的应用程序中出现了一个奇怪的现象.我将对象提交到服务器后将其存储在Hashmap中,并在响应到达时将其删除.
我最近注意到跑步后性能非常慢.检查后,我发现内存使用率保持在4GB,然后下降到小于1 GB.我怀疑它正在清理很多对象,这就是性能变得如此糟糕的原因.
所以问题是为什么Java收垃圾收集这么晚?也就是说,为什么要等到堆满了然后再进行垃圾收集呢?不应该定期收集垃圾.
存储在HashMap中的对象就是在那个时候创建的,也就是说它们并不长久.
这是在Linux(RHEL),Oracle JVM HotSpot 7. 64位上.4核心.这就是应用程序的运行方式:
java -jar -Xmx4g prog.jar
注意:我已经看到了这一点:调整垃圾收集以获得低延迟但是现在我想了解为什么GC需要这么长时间才能启动?
听起来您遇到了以下两个问题之一:
我会考虑调整你的年轻一代,使其规模更大。请参阅分代垃圾收集并查看各种类型的代。