a)据我所知,-Xmx
代表最大堆。
它是年轻一代(eden+survivor)和终身代(老一代)和 perm gen 的组合吗?
b)我现在如何知道UAT/Prod 中应用程序的不同内存空间的最小/最大大小
1)伊甸园空间
2)幸存者空间
3)终身
4)永久代
a)据我所知,-Xmx
代表最大堆。
它是年轻一代(eden+survivor)和终身代(老一代)和 perm gen 的组合吗?
b)我现在如何知道UAT/Prod 中应用程序的不同内存空间的最小/最大大小
1)伊甸园空间
2)幸存者空间
3)终身
4)永久代
您可以使用 jstat 从外部观看这些尺寸,例如
jstat -gc {pid} 10s
您可以通过使用找出 pid
jps -lvm
Perm 生成是通过MaxPermSize
. 这不包括在-Xmx
-Xmx
包括一个 Eden 空间,两个幸存者空间和老年代。
您甚至可以通过知道来计算各个空间--xx:NewRation:
。这是年轻一代和老一代之间的比例。例如 if n
is 3
than ratio is和空间1:3
的组合大小是年轻代和老年代的总大小。Eden
survivor
one forth
您还可以使用jstat
命令来了解各个尺寸,并且VisualVM等工具可以为您提供很大帮助。只需查看图片,该图片说明了您对各个空间细节的图形表示。
如果您想知道这些空间的大小,请使用 java 选项-verbose:gc -XX:+PrintGCDetails
。本文档将帮助您了解不同代的工作方式。
通过分配的最大堆大小-Xmx
是年轻代和终身代的组合。permgen 空间是单独分配的,使用-XX:MaxPermSize
JVM 的选项。这个问题在这里得到解答:
确定 JVM 中堆中不同代的大小的一种好方法 - 特别是在远程服务器上 - 是使用 jmap 命令:
http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html
这是我管理的服务器的一些示例输出:
$ sudo jmap -heap 28579
Attaching to process ID 28579, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_07-b03
using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 6127878144 (5844.0MB)
NewSize = 2147483648 (2048.0MB)
MaxNewSize = 2147483648 (2048.0MB)
OldSize = 3980394496 (3796.0MB)
NewRatio = 15
SurvivorRatio = 1024
PermSize = 314572800 (300.0MB)
MaxPermSize = 314572800 (300.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 2145452032 (2046.0625MB)
used = 2130014864 (2031.3404693603516MB)
free = 15437168 (14.722030639648438MB)
99.28047014010332% used
Eden Space:
capacity = 2143420416 (2044.125MB)
used = 2130014864 (2031.3404693603516MB)
free = 13405552 (12.784530639648438MB)
99.37457197384462% used
From Space:
capacity = 2031616 (1.9375MB)
used = 0 (0.0MB)
free = 2031616 (1.9375MB)
0.0% used
To Space:
capacity = 2031616 (1.9375MB)
used = 0 (0.0MB)
free = 2031616 (1.9375MB)
0.0% used
concurrent mark-sweep generation:
capacity = 3980394496 (3796.0MB)