C. *_*oss 2 java jvm jvm-arguments
我开始-Xmx在java命令上使用该选项,以允许我的进程使用更多的内存(256Mb,但我认为我目前使用的内存少于128Mb).我还注意到了-Xms启动内存的选项,默认值为2Mb.我该怎么设置这个值以及为什么?
该-Xmx参数定义了堆可以为JVM获取的最大内存大小.您必须很好地了解您的程序并查看它在负载下的执行情况并相应地设置此参数.OutOfMemoryException如果程序的堆内存达到最大堆大小,则较低的值可能会导致性能或性能极差.如果您的程序在专用服务器上运行,则可以将此参数设置得更高,因为它不会影响其他程序.
该-Xms参数设置JVM的初始和最小堆内存大小.这意味着当您启动程序时,JVM将立即分配此数量的内存.如果您的程序从一开始就消耗大量堆内存,这将非常有用.这避免了JVM需要定期增加堆大小,因此您可以在那里获得一些性能.如果您不知道此参数是否对您有所帮助,请不要使用它.
使用Resin等服务器端Java应用程序将最小-Xms和最大-Xmx堆大小设置为相同值是一种很好的做法.您可以设置为256或512Mb.
小智 7
堆大小对于您的应用程序找到权利应该是"正确的"虽然并不容易.如果它太小,你就会耗尽内存,如果你要浪费内存,就会冒着长时间停顿的风险.当出现问题(并且它们总是出错)时,您拥有的堆越多,您需要调试的堆越多,泄漏所需的时间就越长.
理想情况下,我将设置-Xms为我认为我的应用程序需要运行的大小,并-Xmx设置为大于此值(但不是太大)的值.始终打开详细垃圾回收并绘制正在使用的堆图以检查您设置的值.
当我绘制堆图时,我会查看发生的集合数和类型.重要的是不要有太多.然而,重要的是不要有如此巨大的堆,以至于很少,因为当它们发生时(并且完全的gc是不可避免的)它们会受到伤害.理想情况下,正在寻找具有非常低暂停时间的常规间隔良好的gcs.
那说32位Windows -Xms应该是相同的,-Xmx因为Java(抛开jrockit)需要连续的内存,而Windows的内存映射是碎片化的,因此它需要尽早获得并锁定堆.
| 归档时间: |
|
| 查看次数: |
18502 次 |
| 最近记录: |