在学习ES发现JVM内存不要超过32G的建议,故查找了一下原因。
java -Xmx32766m -Xms32766m -XX:+PrintFlagsFinal 2> /dev/null | grep UseCompressedOops
bool UseCompressedOops := true {lp64_product}
查过32G内存后,Java8的JVM启用UseCompressedOops,也就是不会启用压缩对象指针。
Please note that as the alignment value increases, the unused space between objects will also increase. As a result, we may not realize any benefits from using compressed pointers with large Java heap sizes.
意思是即使超过32G使用上压缩对象指针,但这种压缩对象指针,也不会带来任何好处。(2020年)所以,这个时间点,还是使用32G以下吧。
参考
- A Heap of Trouble: Managing Elasticsearch’s Managed Heap
- JAVA堆大小不要超过32GB
- Compressed OOPs in the JVM