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