0

我使用 jvm 参数启动了树脂 3.0.28:

    -Xms6300M -Xmx6300M -Xss128k -XX:ThreadStackSize=256 -XX:MaxPermSize=128M 
-XX:PermSize=128M -verbose:gc -XX:+PrintGCDetails -XX:+UseParallelGC 
-XX:+PrintGCTimeStamps

但是保留的内存已经超过10GB

树脂有什么问题?我使用 jmap -heap ,输出如下:它表明 jvm 堆内存处于正常状态。

正在附加到进程 ID 9456,请稍候...
调试器连接成功。
检测到服务器编译器。
JVM 版本为 10.0-b22

使用线程局部对象分配。
具有 16 个线程的并行 GC

堆配置:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize = 6606028800 (6300.0MB)
   新大小 = 2686976 (2.5625MB)
   MaxNewSize = -65536 (-0.0625MB)
   OldSize = 5439488 (5.1875MB)
   新比率 = 2
   幸存者比率 = 8
   PermSize = 134217728 (128.0MB)
   MaxPermSize = 134217728 (128.0MB)

堆使用:
PS年轻一代
伊甸空间:
   容量 = 2155151360 (2055.3125MB)
   使用 = 1966086568 (1875.0062637329102MB)
   免费 = 189064792 (180.30623626708984MB)
   91.22730795112228% 已使用
从太空:
   容量 = 23265280 (22.1875MB)
   使用 = 13849352 (13.207771301269531MB)
   免费 = 9415928 (8.979728698730469MB)
   59.527983329665496% 已使用
到太空:
   容量 = 23068672 (22.0MB)
   使用 = 0 (0.0MB)
   免费 = 23068672 (22.0MB)
   0.0% 已使用
PS老一代
   容量 = 4404019200 (4200.0MB)
   使用 = 3854164456 (3675.6176528930664MB)
   免费 = 549854744 (524.3823471069336MB)
   87.51470602126349% 已使用
PS烫发一代
   容量 = 134217728 (128.0MB)
   使用 = 53393152 (50.919677734375MB)
   免费 = 80824576 (77.080322265625MB)
   39.78099822998047% 已使用
4

1 回答 1

0

你到底是什么意思我的“记忆保留”?我假设您的意思是进程本身分配的内存:

堆不会使用超过您指定的数量(除了一些碎片,但那是次要的)。进程中的“其他对象”使用这个空间,虽然树脂或 JVM 可能有问题,特别是如果内存在数周内稳定增长,树脂和 hvm 使用的内存量也可能是正常的。

看看我尝试回答另一个类似的问题:

JVM内存消耗是堆大小的两倍

简而言之:确保您查看正确的进程大小。我通常在 32 位 Debian 系统上为树脂设置 1-1.5 GB 的非 Java 堆空间(这当然会让你的 4 GB 听起来很多)。

此外:
-Xss128k -XX:ThreadStackSize=256

将被解释为

-XX:ThreadStackSize=128 -XX:ThreadStackSize=256,

所以你可能想删除其中一个......(见http://mail.openjdk.java.net/pipermail/hotspot-dev/2011-June/004272.html

于 2011-07-17T11:58:31.677 回答