标签: zgc

Java ZGC垃圾收集器使用大量内存

我使用Springboot构建了一个简单的应用程序。我在部署到Linux服务器时使用的ZGC垃圾收集器使用大量内存..我尝试使用Xmx500m将最大堆内存限制为500MB,但JAVA程序仍然使用了1GB以上。我用G1收集器的时候只用了350MB。不知道为什么,这是JDK11的BUG吗?还是我的启动参数有问题?####运行环境

  • 操作系统CentOS Linux 7.8.2003
  • JDK版本jdk11
  • springboot 版本v2.3.0.RELEASE 这是我的 Java 启动命令
java -Xms128m -Xmx500m \
-XX:+UnlockExperimentalVMOptions -XX:+UseZGC \
-jar app.jar
Run Code Online (Sandbox Code Playgroud)

这是运行时内存使用情况的截图

堆内存使用情况 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
Run Code Online (Sandbox Code Playgroud)

堆内存使用情况 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的初学者,我不明白为什么。

java jvm java-11 zgc

6
推荐指数
2
解决办法
2408
查看次数

JDK11 中的 ZGC 名称中的字母“Z”究竟指的是什么?

我听说 JDK 11 引入了一个名为 ZGC 的新垃圾收集器策略,但我找不到它代表什么。字母“Z”是什么意思?它有什么特定的含义吗?

java garbage-collection terminology zgc

5
推荐指数
1
解决办法
186
查看次数

启用 ZGC 时出现“分配停滞”

zgc我正在测试 11中包含的新垃圾收集器java,因为它承诺非常低的延迟。我们的应用程序是一个实时服务,每秒创建和销毁许多对象,并且它在多线程环境中使用akka.

zgc通过传递选项-XX:+UnlockExperimentalVMOptions -XX:+UseZGC和启用gc日志来启用时,我们可以在日志中看到许多类似于以下的消息:

[2020-05-20T18:05:36.563+0000][63.851s][info ][gc] Allocation Stall (Main-akka.remote.default-remote-dispatcher-6) 11332.231ms
[2020-05-20T18:05:36.563+0000][63.851s][info ][gc] Allocation Stall (Main-akka.remote.default-remote-dispatcher-26) 9898.046ms
[2020-05-20T18:05:36.563+0000][63.851s][info ][gc] Allocation Stall (Main-io-blocking-dispatcher-52) 12133.240ms
[2020-05-20T18:05:36.563+0000][63.851s][info ][gc] Allocation Stall (Main-akka.actor.default-dispatcher-54) 9002.299ms
[2020-05-20T18:05:36.563+0000][63.850s][info ][gc] Allocation Stall (Main-io-blocking-dispatcher-50) 12134.218ms
[2020-05-20T18:05:36.563+0000][63.850s][info ][gc] Allocation Stall (Main-akka.actor.default-dispatcher-46) 12132.540ms
[2020-05-20T18:05:36.563+0000][63.851s][info ][gc] Allocation Stall (Main-akka.actor.default-dispatcher-56) 8072.664ms
Run Code Online (Sandbox Code Playgroud)

几秒钟后,JVM 退出,没有给出任何原因。我们正在奔跑openjdk-java-11。关于如何开展这项工作有什么建议吗?

java garbage-collection java-11 zgc

5
推荐指数
1
解决办法
3412
查看次数

3
推荐指数
1
解决办法
1519
查看次数

输出 JDK12 中带有 None vmop 操作的 Safepoint+stats 日志

我正在使用-Xlog:safepoint+stats=debug:file=safepoint.log vm 参数在JDK12上运行应用程序以记录安全点操作并使用 ZGC 运行。我有理解日志输出的问题:

[1408.417s][debug][safepoint,stats]           vmop                            [ threads:    total initially_running wait_to_block ][ time:    spin   block    sync cleanup    vmop ] page_trap_count
[1412.164s][debug][safepoint,stats] 1412.162: ZOperation                    [               376                 0             7 ][             0       0       0       0       1 ]               7
[1413.164s][debug][safepoint,stats] 1413.164: None                          [               376                 0             0 ][             0       0       0       0       0 ]               0
[1414.165s][debug][safepoint,stats] 1414.164: None                          [               376                 0             1 ][             0       0       0       0       0 ]               1
Run Code Online (Sandbox Code Playgroud)

我知道第一行告诉 ZOperation 花费了 1 毫秒,并且有 7 个线程参与了阻塞。

我不明白第二行,什么是“None” vmop 操作?看起来那个操作的持续时间是 …

java jvm zgc

2
推荐指数
1
解决办法
567
查看次数

OpenJDK 11 和 macOS 不支持 ZGC?

我正在尝试使用 ZGC 垃圾收集器运行 Spring Boot 应用程序,并传入以下 JVM 选项build.gradle

bootRun {
    jvmArgs = ["-XX:+UnlockExperimentalVMOptions", "-XX:+UseZGC", "-Xlog:gc*"]
}
Run Code Online (Sandbox Code Playgroud)

运行应用程序 ( gradle bootRun) 时出现以下错误:

> Task :bootRun FAILED
Error occurred during initialization of VM
Option -XX:+UseZGC not supported
Run Code Online (Sandbox Code Playgroud)

java - 版本:

openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我正在运行 10.15.2 (19C57) 版本的 macOS (Catalina)。只是 macOS 的问题吗?

java garbage-collection gradle java-11 zgc

2
推荐指数
1
解决办法
1132
查看次数

Java11 引入的 Z 垃圾收集器有多稳定?

我正在使用Java 11新的 Z 垃圾收集器 (ZGC) 似乎很有前途。

文档说它使用了一些低延迟垃圾收集机制,这样GC暂停时间永远不会超过10 ms,非常好地处理大堆,并允许将未使用的堆内存返回给操作系统,而旧的 GC 不存在

我担心的是 - ZGC 的稳定性如何,如果在生产中继续推进,是否存在风险?

谢谢!

java garbage-collection java-11 zgc

1
推荐指数
1
解决办法
368
查看次数

标签 统计

java ×7

zgc ×7

garbage-collection ×5

java-11 ×4

jvm ×2

gradle ×1

terminology ×1