首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化新一代的垃圾收集?

如何优化新一代的垃圾收集?
EN

Stack Overflow用户
提问于 2014-12-26 16:42:09
回答 3查看 375关注 0票数 0

我想要加速我的JAVA应用程序,并提出以下问题。提前谢谢。

1对于HotSpot JVM年轻一代,是否可以跳过对伊甸园中最新分配的对象的垃圾回收(gc)?例如,我们跳过伊甸园地区最新的前30%的对象。

2如何减少新一代gc的时间?工作流的响应时间预计小于10ms,但仅新一代gc的复制过程就需要8ms。

EN

回答 3

Stack Overflow用户

发布于 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。

票数 1
EN

Stack Overflow用户

发布于 2015-01-05 00:14:35

如何减少新一代gc的时间?

  • 确保您正在使用多线程GC算法(ParNew、ParallelScavenge或G1GC)
  • 减小年轻一代
    • 的大小这将导致更频繁但更短的年轻一代GC和更多提升的对象,这意味着可以通过分析应用程序的对象分配和优化热点以减少分配GC来应对更频繁的老一代GC

  • 把钱投入到这个问题上:获得更快的CPU /更多的内存bandwidth
  • throw甚至更多的钱
票数 1
EN

Stack Overflow用户

发布于 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://engineering.linkedin.com/garbage-collection/garbage-collection-optimization-high-throughput-and-low-latency-java-applications

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27654819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档