gpt4 book ai didi

java - 如何确定 Java 堆是否正在使用压缩指针以及是否驻留在内存中的地址 0?

转载 作者:搜寻专家 更新时间:2023-11-01 02:01:09 36 4
gpt4 key购买 nike

我正在尝试跟进此博客中的一些提示 https://www.elastic.co/blog/a-heap-of-trouble#ref5其中讨论了调整 Java 堆大小的好处,以便 (a) 可以使用压缩指针(对于 32GB 以下的堆)和 (b) 使堆位于内存中的地址 0。这篇文章详细介绍了压缩指针如何允许更有效地使用堆空间,并解释了当堆位于地址零时,这减少了解析指针地址所需的算术量。最后,文章说如果我使用 JVM 选项 -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode 我将看到这样的日志输出:

堆地址:0x000000011be00000,大小:27648 MB,从零开始的压缩 Oops

这表示启用了从零开始的压缩 oops,或者像这样输出

堆地址:0x0000000118400000,大小:28672 MB,压缩 Oops 基数:0x00000001183ff000

表示堆开始于非零地址,因此需要上述增加的算术处理量。

但是,当我尝试这些选项并通过我的应用程序(Elastic Search 的)日志目录进行 grep 搜索时,我找不到此类消息。如果有人可以建议我如何强制记录从零开始(或不从零开始)的压缩指针的详细信息,我将不胜感激。

解决方案:

很好的答案!..我接受了@apangin,并将他提供的 java 程序包装在一个 shell 脚本中,只要您有 java 就可以运行。如果您正在查看 Java 堆,就应该这样做!这是脚本:https://github.com/buildlackey/scripts/blob/master/verify_compressed_pointers_from_zero_offset.sh

最佳答案

假设您使用的是 Linux 和 ES 5.x 及更高版本。

在整个集群中收集信息的最有效方法是使用 the nodes info API :

curl -XGET "http://localhost:9200/_nodes/jvm?filter_path=nodes.*.jvm.using_compressed_ordinary_object_pointers"

{"nodes":{"-jYDCxbpT2SBKc4dTfOYsA":{"jvm":{"using_compressed_ordinary_object_pointers":"true"}}}}

相同的信息记录到主日志 -/var/log/elasticsearch/elasticsearch.log

[2017-10-06T23:03:15,223][INFO ][o.e.e.NodeEnvironment ] [-jYDCxb] heap size [1.9gb], compressed ordinary object pointers [true]

如果您对真正的 JVM 输出感兴趣,那么您必须知道默认情况下 JVM 将其消息写入标准输出,而在 Linux 发行版上,此输出默认配置为重定向到 journalctl。所以你有两个选择。第一个是阅读journalctl:

sudo journalctl -u elasticsearch.service

Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 Compressed class space size: 1073741824 Address: 0x0000000100000000 Req Addr: 0x0000000100000000

但有时 journalctl 默认禁用,您必须通过删除 --quite 在守护程序配置 /usr/lib/systemd/system/elasticsearch.service 中更改此设置> 来自 ES 命令行参数的参数。第二种方法是最简单和跨平台的——将 JVM 消息重定向到特定的 GC 日志输出:

-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode -Xloggc:/tmp/vm.log

现在你可以在 /tmp/vm.log 中看到所有 GC 相关的输出

关于java - 如何确定 Java 堆是否正在使用压缩指针以及是否驻留在内存中的地址 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46597668/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com