Stu*_*son 9 java performance jvm
当更多内存可用并通过-Xmx使用时,Sun JVM是否会变慢?(假设:机器有足够的物理内存,因此虚拟内存交换不是问题.)
我问,因为我的生产服务器将接收内存升级.我想把-Xmx值提升到颓废的东西.我们的想法是防止由于我自己不时发生的编程错误导致的任何堆空间耗尽失败.罕见的事件,但如果我有一个淫秽的-Xmx值,如2048mb或更高,我可以通过快速发展的webapp避免它们.应用程序受到严密监控,因此会注意到JVM内存消耗的异常峰值并修复任何缺陷.
可能的重要细节:
编辑:我试图避免发布我的JVM的配置,但显然这使得这个问题荒谬开放.所以,这里我们使用相关的配置参数:
-Xms256m
-Xmx1024m
-XX:+UseConcMarkSweepGC
-XX:+AlwaysActAsServerClassMachine
-XX:MaxGCPauseMillis=1000
-XX:MaxGCMinorPauseMillis=1000
-XX:+PrintGCTimeStamps
-XX:+HeapDumpOnOutOfMemoryError
Run Code Online (Sandbox Code Playgroud)
通过添加更多内存,堆填满需要更长时间.因此,它将减少垃圾收集的频率.但是,根据您的物体的致命程度,您可能会发现任何单个GC增加所需的时间.
GC需要多长时间的主要因素是有多少活动对象.因此,如果几乎所有的物体都很年轻,一旦你建立起来,它们都没有逃过年轻的堆,你可能不会注意到GC的运行时间变化很大.但是,每当你必须循环使用tenured heap时,你可能会发现一切都停止了不合理的时间,因为大多数这些对象仍然存在.相应地调整大小.