Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在设置不同的JVM XMX时,相同代码的RES内存会发生变化_Java_Memory_Jvm - Fatal编程技术网

Java 为什么在设置不同的JVM XMX时,相同代码的RES内存会发生变化

Java 为什么在设置不同的JVM XMX时,相同代码的RES内存会发生变化,java,memory,jvm,Java,Memory,Jvm,我使用datastax驱动程序与Cassandra创建NIO连接,而不做任何其他事情,只是保持连接 更重要的是, 当我将XMX设置为1G时,RESfrom-top-p[JavaPID]将占用大约400M内存, 但是当我将XMX设置为512M时,RES只会占用大约200M的内存 如何理解它?在我看来,我的代码做同样的事情,为什么占用不同的内存 Cluster build = Cluster.builder().addContactPoint("10.224.57.163").withAuthPro

我使用datastax驱动程序与Cassandra创建NIO连接,而不做任何其他事情,只是保持连接

更重要的是, 当我将XMX设置为1G时,RESfrom-top-p[JavaPID]将占用大约400M内存, 但是当我将XMX设置为512M时,RES只会占用大约200M的内存

如何理解它?在我看来,我的代码做同样的事情,为什么占用不同的内存

Cluster build = Cluster.builder().addContactPoint("10.224.57.163").withAuthProvider(new PlainTextAuthProvider("fujian","pass")).withLoadBalancingPolicy(new DCAwareRoundRobinPolicy("DC1")).build();
Session connect = build.connect("demo");

有两个因素在起作用

java并不急于释放托管堆内存。如果你给它更多的空间,它可能会用它来运行地面军事系统,减少CPU周期 NIO可能正在使用堆外内存DirectByteBuffer,它在保存到内存上的缓冲区被GCed之前不会被释放。因此,运行频率较低的GCs不仅可能会占用更多的托管堆,而且会在以后释放堆外内存,从而产生额外的垃圾。 您可以尝试-XX:MaxHeapFreeRatio=30-XX:MinHeapFreeRatio=20将实际堆大小限制在更接近实际占用率的范围内,即更快地释放内存