作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正如 this answer 中所建议的,我在运行性能测试时使用以下标志。
-XX:+PrintCompilation
-verbose:gc
这对于调试计时阶段发生的 JVM Activity 非常有用,但是当我只是计算统计信息并打印有关刚刚运行的基准测试的输出时,输出就没那么有用了。
最佳答案
在运行时关闭 GC 日志很容易,因为 GC 日志包含在 Unified JVM Logging 中。框架。
从命令行
jcmd <pid> VM.log what=gc=off
从应用程序内
ManagementFactory.getPlatformMBeanServer().invoke(
new ObjectName("com.sun.management:type=DiagnosticCommand"),
"vmLog",
new Object[]{new String[]{"what=gc=off"}},
new String[]{"[Ljava.lang.String;"}
);
-XX:+PrintCompilation
不是一个可管理的标志,不遵守统一 JVM 日志记录。但是,也可以更改它。
$ grep libjvm.so /proc/<pid>/maps
7f57435ca000-7f574470d000 r-xp 00000000 fd:00 2342674 /usr/java/jdk-11/lib/server/libjvm.so
^^^^^^^^^^^^
PrintCompilation
的偏移量符号在 libjvm.so
:$ nm /usr/java/jdk-11/lib/server/libjvm.so | grep PrintCompilation
000000000144d7ff b PrintCompilation
^^^^^^^^^^^^^^^^
0
进入进程内存中的地址 base + offset
:$ printf '\x00' | dd of=/proc/<pid>/mem bs=1 count=1 seek=$((0x7f57435ca000 + 0x144d7ff)) conv=notrunc
就是这样。
PrintCompilation
标志已关闭。
/proc/pid/maps
像普通文件一样,解析
libjvm.so
的ELF格式找到符号偏移量,最后使用
Unsafe
在给定地址写入一个字节。
Here is the complete example .
VMFlags.setBooleanFlag("PrintCompilation", true);
关于java - 是否可以在运行时禁用 `-XX:+PrintCompilation` 和 `-verbose:gc"`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65909269/
最近在使用 -XX:+PrintCompilation (JDK 8r111) 检查方法编译时,我注意到一个新列没有出现在 documentation 中。我可以find关于主题:
当 JVM 记录我的程序类的编译/反编译时,它是在开始编译/反编译之前记录还是在完成编译/反编译之后记录? 我使用 -XX:+PrintCompilation 请求 JVM 记录。 谢谢, 罗曼 最佳
正如 this answer 中所建议的,我在运行性能测试时使用以下标志。 -XX:+PrintCompilation -verbose:gc 这对于调试计时阶段发生的 JVM Activit
一些热点 JVM 标志,例如 -XX:+PrintCompilation , 使输出出现在 stdout 或 stderr 上。 GC 相关的输出,例如由 -verbose:gc 启用的输出,可以使用
在运行 Java 1.6 (1.6.0_03-b05) 应用程序时,我添加了 -XX:+PrintCompilation 标志。在某些方法的输出中,尤其是我知道的一些方法被调用了很多,我看到文本 ma
我是一名优秀的程序员,十分优秀!