首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行jcmd GC.class_stats时会导致STW吗?

执行jcmd GC.class_stats时会导致STW吗?
EN

Stack Overflow用户
提问于 2020-07-15 18:38:44
回答 1查看 183关注 0票数 1

我将在tomcat进程上执行jcmd $PID GC.class_stats -csv=true命令,以获取已加载的类状态。

我担心命令对tomcat进程的影响,比如创建堆转储。

在执行命令时会导致停止世界或其他效果吗?

我找不到关于它的信息。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 19:18:02

是的,GC.class_stats是一个高开销的诊断命令,它在全局安全点(STW pause)中运行。在其他操作中,此操作遍历整个堆,以计算所有已加载类的所有实例所消耗的内存。

此外,该操作会导致完全GC。请参阅the source code

代码语言:javascript
复制
void ClassStatsDCmd::execute(DCmdSource source, TRAPS) {
  VM_GC_HeapInspection heapop(output(),
                              true /* request_full_gc */);
  heapop.set_csv_format(_csv.value());
  heapop.set_print_help(_help.value());
  heapop.set_print_class_stats(true);

  ...

  VMThread::execute(&heapop);  <-- VM_GC_HeapInspection runs in a global safepoint
}

jcmd <pid> help GC.class_stats还警告说,该命令对虚拟机的影响很大:

代码语言:javascript
复制
GC.class_stats
Provide statistics about Java class meta data.

Impact: High: Depends on Java heap size and content.

顺便说一下,JDK15中的GC.class_stats has been removed

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62913029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档