首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JVM /代码调优以减少JVM暂停时间

JVM /代码调优以减少JVM暂停时间
EN

Stack Overflow用户
提问于 2017-01-26 21:18:22
回答 2查看 1.2K关注 0票数 0

我们正在对我们的Web应用程序进行负载测试,其中一项建议是尽量减少暂停时间,以提高响应时间。

从我的研究来看,减少暂停时间的最好方法是最小化对象的生存期,但是关于这个主题的信息是非常缺乏的。所以我想知道两件事:

  1. 假设缩短暂停时间会缩短响应时间,这是正确的吗?
  2. 除了正确和快速地处理对象之外,还有其他方法来减少暂停时间吗?

我们当前相关的JVM选项是:

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:NewRatio=2 -XX:+UseTLAB -XX:SurvivorRatio=2 -Dsun.reflect.noInflation=false -Dsun.reflect.inflationThreshold=21474836 -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true -XX:MaxMetaspaceSize=256m -Xms3072m -Xmx3072m -XX:+CMSClassUnloadingEnabled

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 09:41:12

为了提高响应时间的一致性,您需要减少暂停的原因。这可能是GC,等待网络资源,使用锁导致糟糕的可伸缩性或一些暂停。

如果您的响应时间延迟的主要原因是GC暂停,那么减少GC暂停时间的数量和长度将改善响应时间。尤其是响应时间的一致性。

如果您试图减少典型的响应时间,但并不是在每个请求上都获得GC,那么您很可能希望对软件进行调优,以减少工作量、分配更少的对象、使用更低的时间复杂度算法、避免对每个请求进行网络访问和IO访问。

票数 2
EN

Stack Overflow用户

发布于 2017-01-26 21:39:13

您不应该编写面向对象的代码以减少对象的生命周期,您只需编写设计良好的代码。尽管如此,我建议在可能的情况下使用Fly权重模式。

当您在GC暂停期间有请求时,缩短暂停时间将大大缩短响应时间。( GC暂停将增加通常的响应时间,因为应用程序将停止直到GC完成)

您可以专注于调整JVM,更精确地设置堆大小选项(检查Java选项)。GC及其选项可能会根据JDK版本而改变。

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

https://stackoverflow.com/questions/41883146

复制
相关文章

相似问题

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