5回复
5年前
关于jvm 超过32G的特别说明
待优化的参数
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=10001
-Xms31744m
-Xmx31744m
-XX:ParallelGCThreads=8
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:ErrorFile=/data1/log/hadoop/hs_err_pid%p.log
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/data1/log/hadoop/namenode-heapdump.log-`date
+'%Y%m%d%H%M'`
-XX:CMSInitiatingOccupancyFraction=84
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+CMSScavengeBeforeRemark
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
$HADOOP_NAMENODE_OPTS
核数32
物理内存64G
操作系统Linux
位数64
JDK版本JDK8
这其实是个建议
个人认知为在jvm有32G的临界,使用指针压缩的问题存在。那么32G前后应该有个特别的说明,比如-Xmx31744m的时候是小于32G使用时会将指针压缩,但是超过32G会使用64bit的指针使用方式,类比**++可以给出个分析文章++**建议比如heap>=38G 的时候 heap 这里能存下的对象与heap=32G 能存下的大小接近
4342 阅读