Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用这些垃圾收集设置时的JVM性能_Java_Performance_Garbage Collection_Jvm_Jvm Arguments - Fatal编程技术网

Java 使用这些垃圾收集设置时的JVM性能

Java 使用这些垃圾收集设置时的JVM性能,java,performance,garbage-collection,jvm,jvm-arguments,Java,Performance,Garbage Collection,Jvm,Jvm Arguments,我有一个企业级Java应用程序,每天为几千个用户提供服务。这是WebLogic10.3.6(Java1.6JVM)上的JAXBWeb服务,使用Hibernate访问Oracle数据库。它还调用其他web服务 我们已在生产系统上调整了以下GC设置: -server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m 这种GC分级的效果如何?硬件有足够的容量来处理它 我知道这将堆大小和perm gen设置在一个稳定的水平。但是,当你

我有一个企业级Java应用程序,每天为几千个用户提供服务。这是WebLogic10.3.6(Java1.6JVM)上的JAXBWeb服务,使用Hibernate访问Oracle数据库。它还调用其他web服务

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

-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m
这种GC分级的效果如何?硬件有足够的容量来处理它

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

对我来说,这似乎会使GC发生的频率降低,但发生的时间会更长。听起来对吗

这会使GC发生的频率降低,但发生的时间更长

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

2GB堆并没有那么多,我可以使用高达26GB的内存,而不用担心堆的大小。超过此大小时,内存访问会稍微慢一点或使用更多内存

这会使GC发生的频率降低,但发生的时间更长

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


2GB堆并没有那么多,我可以使用高达26GB的内存,而不用担心堆的大小。超过此大小时,内存访问会稍微慢一点或使用更多内存。

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

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

将-Xmx&-Xms和PermSize&MaxPermSize设置为相等的大小将阻止JVM根据您的需求调整堆的大小。这些调整大小的代价很高,因为它们会触发一个完整的GC

-服务器将允许JVM使用服务器编译器,它将在将代码编译为本机汇编指令之前进行更积极的优化。尽管现在,任何拥有2个或更多内核和2GB+内存的机器都会默认打开服务器编译器

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

如果您需要有关GC的详细信息,可以尝试以下方法


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

将-Xmx&-Xms和PermSize&MaxPermSize设置为相等的大小将阻止JVM根据您的需求调整堆的大小。这些调整大小的代价很高,因为它们会触发一个完整的GC

-服务器将允许JVM使用服务器编译器,它将在将代码编译为本机汇编指令之前进行更积极的优化。尽管现在,任何拥有2个或更多内核和2GB+内存的机器都会默认打开服务器编译器

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

如果您需要有关GC的详细信息,可以尝试以下方法


调整某些东西的真正原因是为了提高应用程序的性能,并通过实现吞吐量和延迟目标来实现。

谢谢,我想这就是我认为会发生的事情。所以做这件事的小组做得很好——他们正确地设置了堆的大小,并让堆的大小保持不变。他们已将堆增加到2 GB。@如果您希望将最大堆大小设置为您希望进程失败而不是使用更多内存的值。您不必将最小值设置为最大值。我会将最小值设置为您期望JVM使用的量,这可能会小于最大值。谢谢,这就是我认为会发生的事情。所以做这件事的小组做得很好——他们正确地设置了堆的大小,并让堆的大小保持不变。他们已将堆增加到2 GB。@如果您希望将最大堆大小设置为您希望进程失败而不是使用更多内存的值。您不必将最小值设置为最大值。我会将最小值设置为您期望JVM使用的量,这可能会小于最大值。