2

a)据我所知,-Xmx代表最大堆。
它是年轻一代(eden+survivor)和终身代(老一代)和 perm gen 的组合吗?

b)我现在如何知道UAT/Prod 中应用程序的不同内存空间的最小/最大大小
1)伊甸园空间 2)幸存者空间
3)终身
4)永久代

4

4 回答 4

2

您可以使用 jstat 从外部观看这些尺寸,例如

jstat -gc {pid} 10s

您可以通过使用找出 pid

jps -lvm
于 2013-11-08T11:57:17.853 回答
1

Perm 生成是通过MaxPermSize. 这不包括在-Xmx

-Xmx包括一个 Eden 空间,两个幸存者空间和老年代。

您甚至可以通过知道来计算各个空间--xx:NewRation:。这是年轻一代和老一代之间的比例。例如 if nis 3than ratio is和空间1:3的组合大小是年轻代和老年代的总大小。Edensurvivorone forth

您还可以使用jstat命令来了解各个尺寸,并且VisualVM等工具可以为您提供很大帮助。只需查看图片,该图片说明了您对各个空间细节的图形表示。

在此处输入图像描述

于 2013-11-08T11:49:58.413 回答
1

如果您想知道这些空间的大小,请使用 java 选项-verbose:gc -XX:+PrintGCDetails。本文档将帮助您了解不同代的工作方式。

于 2013-11-08T11:51:47.020 回答
0

通过分配的最大堆大小-Xmx是年轻代和终身代的组合。permgen 空间是单独分配的,使用-XX:MaxPermSizeJVM 的选项。这个问题在这里得到解答:

permgen 是否包含在 -Xmx 中?

确定 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)
于 2013-11-08T12:00:43.530 回答