Java ZGC 垃圾回收器使用大量内存
我使用Springboot构建了一个简单的应用程序。我在部署到Linux服务器时使用的ZGC垃圾回收器使用了大量的内存。我试图使用Xmx500m将最大堆内存限制为500MB,但JAVA程序仍然使用超过1GB。当我使用G1收集器时,它只使用了350MB。我不知道为什么,这是JDK11的错误吗?或者我的引导参数有问题吗?####Runtime环境
- 操作系统: CentOS Linux 版本 7.8.2003
- JDK 版本: jdk11
- springboot 版本: v2.3.0.RELEASE 这是我的 Java 启动命令
java -Xms128m -Xmx500m \
-XX:+UnlockExperimentalVMOptions -XX:+UseZGC \
-jar app.jar
下面是运行时内存使用情况的屏幕截图
堆内存使用情况 https://github.com/JoyfulAndSpeedyMan/assets/blob/master/2020-07-13%20201259.png?raw=true
系统内存使用 https://github.com/JoyfulAndSpeedyMan/assets/blob/master/2020-07-13%20201357.png?raw=true
下面是使用缺省垃圾回收器 Java 启动命令时发生的情况
java -Xms128m -Xmx500m \
-jar app.jar
堆内存使用情况 https://github.com/JoyfulAndSpeedyMan/assets/blob/master/2020-07-13%20202442.png?raw=true
系统内存使用情况 https://github.com/JoyfulAndSpeedyMan/assets/blob/master/2020-07-13%20202421.png?raw=true
默认情况下,jdk11 使用 G1 垃圾回收器。从理论上讲,G1不应该比ZGC更占用内存吗?我为什么不这样使用它?我误会了吗?由于我是JVM的初学者,我不明白为什么。