我想要加速我的JAVA应用程序,并提出以下问题。提前谢谢。
1对于HotSpot JVM年轻一代,是否可以跳过对伊甸园中最新分配的对象的垃圾回收(gc)?例如,我们跳过伊甸园地区最新的前30%的对象。
2如何减少新一代gc的时间?工作流的响应时间预计小于10ms,但仅新一代gc的复制过程就需要8ms。
发布于 2014-12-26 17:56:27
对于HotSpot JVM年轻一代的
1,是否可以跳过eden中最新分配的对象的垃圾回收(gc)?例如,我们跳过伊甸园地区最新的前30%的对象。
当你清理伊甸园时,要么全有要么什么都不做。最新的对象更有可能在survivor空间中,并在下一个集合中被清理。
2如何减少新一代gc的时间?工作流的响应时间预计小于10ms,但仅新一代gc的复制过程就需要8ms。
JVM不是硬实时系统。这意味着即使没有GC,它也总有可能暂停10毫秒。而不是说10毫秒的响应,一个更现实的目标是99%的时间< 10毫秒。这允许一些小的集合。
如果您想真正减少GC暂停时间,您可以使用Azul Zing,因为它有一个并发收集器(商业),或者将您生产的垃圾数量减少到一天内小于您的伊甸园大小。例如,将eden大小设置为24 GB,每小时生成少于1 GB。
发布于 2015-01-05 00:14:35
如何减少新一代gc的时间?
发布于 2014-12-26 16:54:34
您应该对GC的某些特性进行优化,以减少其对应用程序性能的影响。与吞吐量和延迟一样,应该在长时间运行的测试中观察这些GC特征,以确保应用程序可以在经历多个GC周期时处理流量变化。1. Stop- the -world收集器暂停应用程序线程以收集垃圾。这些暂停的持续时间和频率不应对应用程序遵守SLA的能力产生负面影响。2.并发GC算法与应用程序线程竞争CPU周期。此开销不应影响应用程序吞吐量。3.未压缩的GC算法可能会导致堆碎片,这会导致由于GC已满而导致长时间的停顿。应该将堆碎片保持在最小。垃圾收集需要内存才能工作。某些GC算法比其他算法具有更高的内存占用。如果应用程序需要较大的堆,请确保GC的内存开销不大。4.清楚地了解GC日志和常用的JVM参数是必要的,以便在代码复杂性增加或工作负载特征发生变化时轻松调整GC行为。
还可以看看这个:
https://stackoverflow.com/questions/27654819
复制相似问题