env:jdk8
垃圾:g1
jvm参数: -Xms30G -Xmx30G -XX:MaxDirectMemorySize = 1G -XX:MetaspaceSize = 500m -XX:MaxMetaspaceSize = 1G
程序长时间运行 top命令注意Res大于或等于60G。我想知道此问题的原因。 谁曾经遇到过这样的问题?帮帮我
答案 0 :(得分:0)
-Xmx是最大堆大小。它不是最大进程大小。您正在使用其他资源,例如线程,套接字,GUI,直接内存,共享库,元空间,内存映射文件。
我会说;直接内存是最有可能的方法,尤其是因为它的最大大小默认情况下与堆相同,但是@apangin指出您已将最大大小设置为1 GB。
我不知道找到使用多少直接内存的简单方法,但是在Oracle JVM上,您可以获得java.nio.Bits#reservedMemory
,因为它具有当前分配的数量。