具有这些垃圾收集设置的JVM性能

时间:2014-07-25 02:11:19

标签: java performance garbage-collection jvm jvm-arguments

我有一个企业级Java应用程序,每天为几千名用户提供服务。这是weblogic 10.3.6(Java 1.6 JVM)上的JAXB Web服务,使用Hibernate命中Oracle数据库。它还调用其他Web服务。

我们在生产系统上调整了以下GC设置:

-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m

此GC尺寸的影响是什么?硬件具有足够的容量来处理它。

我知道这会将堆大小和perm gen设置在稳定的水平。但是当你最终不得不进行垃圾收集时,影响是什么呢?

对我来说,它似乎会使GC不那么频繁发生,但是当它确实发生时需要更长的时间。这听起来不错吗?

3 个答案:

答案 0 :(得分:2)

我想说请在决定调整大小之前监视GC,因为您永远不知道应用程序在负载下的行为。看看这个linkthis它有一些关于GC的好参考资料和计算相同的工具。

答案 1 :(得分:1)

  

这会使GC不那么频繁发生,但是当它发生时需要更长的时间

可能,这取决于您的使用案例。在极少数情况下,您甚至可能会发现GC更短。

2 GB的堆不是那么多,我会使用高达26 GB而不用担心堆大小。高于此大小的内存访问速度稍慢或使用更多内存。

答案 2 :(得分:1)

设置-Xmx& -Xms和PermSize& MaxPermSize到相同的大小将阻止JVM根据您的要求调整堆大小。这些调整大小很昂贵,因为它们会触发Full GC。

-server将允许JVM使用Server Compiler,它将在将代码编译为本机程序集指令之前进行更积极的优化。虽然现在任何拥有2个或更多内核和2GB +内存的计算机都会默认启用服务器编译器。

增加内存并不能解决问题。有时添加更多内存将是一种开销。

如果您需要有关GC的详细信息,可以试用link

调整内容的原因是为了提高应用程序的性能,并实现吞吐量和延迟目标。