我想加快我的JAVA应用程序,并提出以下问题。 提前谢谢。
1对于HotSpot JVM年轻代,是否可以跳过垃圾回收 (GC) 对于伊甸园中最新分配的对象?例如,我们跳过前30% 伊甸园地区最新的物体。
2如何缩短新一代gc的时间?响应时间 工作流程预计不到10毫秒,但gc的复制过程为 仅新一代需要8毫秒。
答案 0 :(得分:1)
1对于HotSpot JVM年轻代,是否可以跳过eden中最新分配的对象的垃圾收集(gc)?例如,我们跳过伊甸园区域中最新的30%最新对象。
当你清理伊甸园时,它是全有或全无。最新的物体更有可能存在于幸存者的空间中,并在下一个集合中被清理。
2如何缩短新一代gc的时间?工作流的响应时间预计小于10毫秒,但仅新一代gc的复制过程需要8毫秒。
JVM不是一个硬实时系统。这意味着即使没有GC,也总有可能暂停10 ms。而不是说10毫秒响应,更现实的目标是具有< 10%99%的时间。这允许一些小的集合。
如果你想真正减少GC暂停时间,你可以;使用Azul Zing,因为它有一个并发的收集器(商业),或者将你产品的垃圾量减少到一天之内的伊甸园尺寸。例如将eden大小设置为24 GB,每小时产生不到1 GB。
答案 1 :(得分:1)
如何缩短新一代gc的时间?
答案 2 :(得分:0)
您应优化GC的某些特性,以降低其应用程序性能的开销。与吞吐量和延迟一样,应在长时间运行的测试中观察这些GC特性,以确保应用程序可以在经历多个GC周期时处理流量差异。 1. Stop-the-world收集器暂停应用程序线程以收集垃圾。这些暂停的持续时间和频率不应对应用程序遵守SLA的能力产生不利影响。 2.并发GC算法与CPU周期的应用程序线程竞争。此开销不应影响应用程序吞吐量。 3.非压缩GC算法可能导致堆碎片,这会导致由于完全GC导致的长时间停止停顿。堆碎片应该保持在最低限度。 垃圾收集需要内存才能工作。某些GC算法比其他算法具有更高的内存占用。如果应用程序需要大堆,请确保GC的内存开销不大。 4.如果代码复杂性增加或工作负载特性发生变化,则必须清楚地了解GC日志和常用的JVM参数,以便轻松调整GC行为。
另见: