1
34
要总结链接后找到的信息,请执行以下操作: JVM分配由-xms指定的数量,但是操作系统通常在需要时才分配真正的页面。因此,JVM按照XMS指定的方式分配虚拟内存,但只根据需要分配物理内存。 在Windows上,您可以通过SysInternals而不是任务管理器使用ProcessExplorer来看到这一点。 所以在使用-xms64m和-xms512m之间有一个真正的区别。 但我认为最重要的区别是您已经指出的一点:如果您确实需要512MB,垃圾收集器的运行频率会更高,但只从64MB开始。 |
2
35
JVM将从初始堆级别的内存使用率开始。如果maxheap更高,则当内存需求超过当前内存时,它将增长到maxheap大小。 所以,
JVM从512M开始,从不调整大小。
jvm从64m开始,如果mem,则增长(最大上限为512)。要求超过64。 |
3
14
除了标准堆参数
|
4
5
JVM自适应地调整堆的大小,这意味着它将尝试为您的应用程序找到最佳的堆大小。-xms和-xmx只是指定jvm可以操作和调整堆大小的范围。如果-xms和-xmx是相同的值,那么jvm的堆大小将保持不变。 通常最好只设置-xmx并让jvm找到最佳堆大小,除非有特定的原因需要在jvm启动时给jvm一个大堆。 就JVM实际从操作系统请求内存而言,我相信这取决于JVM的平台和实现。我想在你的应用真正需要它之前它不会请求内存。-xmx和-xms只是保留内存。 |
5
4
如果你写道: -XMS512M-XMX512M 当启动时,Java在RAM的512M时刻分配进程,不能增加。 -XMS64M-XMX512M 当它启动时,Java只为其进程分配了6M RAM,但是Java可以在512M的范围内增加他的内存占用。 我认为第二件事情是更好的,因为你给Java自动内存管理。 |
6
0
我在年创造了这个玩具的例子。
我和它一起跑:
和
有明显的停顿
|