JVM中的MaxHeapSize值不一致问题
来源:互联网 发布:nodejs连接sqlserver 编辑:程序博客网 时间:2024/06/01 07:42
查看MaxHeapSize参数值, 我们可以使用两类JVM选项: -XX:+PrintFlagsFinal 和 -XX:+PrintCommandLineFlags. 下面是使用 -XX:+PrintFlagsFinal参数的输出:
[root@localhost ~]# java -XX:+PrintFlagsFinal -version |grep :
uintx InitialHeapSize := 258689024 {product}
uintx MaxHeapSize := 4139778048 {product}
bool PrintFlagsFinal := true {product}
bool UseCompressedOops := true {lp64_product}
bool UseParallelGC := true {product}
第三列”=”表示第四列是参数的默认值,而”:=” 表明了参数被用户或者JVM赋值了。
如果运行 -XX:+PrintCommandLineFlags, 能看到 :
[root@localhost ~]# java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=258689024 -XX:MaxHeapSize=4139024384 -XX:+PrintCommandLineFlags -XX:+UseCompressedOops -XX:+UseParallelGC
你发现了吗?两个MaxHeapSize值不相等, 为什么?
实际的堆大小和用户在命令行指定的大小不一致,是由于校正机制和就近取整
默认情况下,堆是2MB对齐的,也就是说堆的最小分配单元是2MB
来自 -XX:+PrintCommandLineFlags 的 4139024384 经过2MB校正并向上取整后 变为 来自 -XX:+PrintFlagsFinal的4139778048 这是最终的堆大小 .
因为 4139024384 不是 2M对齐的:4139024384 / (2*1024*1024) = 1973.640625. 向上取整后变成1974,所以 4139778048 / (2*1024*1024) = 1974
可以得出最终堆大小为4139778048,和-XX:+PrintFlagsFinal的4139778048一致
[root@localhost ~]# java -XX:+PrintFlagsFinal -version |grep :
uintx InitialHeapSize := 258689024 {product}
uintx MaxHeapSize := 4139778048 {product}
bool PrintFlagsFinal := true {product}
bool UseCompressedOops := true {lp64_product}
bool UseParallelGC := true {product}
第三列”=”表示第四列是参数的默认值,而”:=” 表明了参数被用户或者JVM赋值了。
如果运行 -XX:+PrintCommandLineFlags, 能看到 :
[root@localhost ~]# java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=258689024 -XX:MaxHeapSize=4139024384 -XX:+PrintCommandLineFlags -XX:+UseCompressedOops -XX:+UseParallelGC
你发现了吗?两个MaxHeapSize值不相等, 为什么?
实际的堆大小和用户在命令行指定的大小不一致,是由于校正机制和就近取整
默认情况下,堆是2MB对齐的,也就是说堆的最小分配单元是2MB
来自 -XX:+PrintCommandLineFlags 的 4139024384 经过2MB校正并向上取整后 变为 来自 -XX:+PrintFlagsFinal的4139778048 这是最终的堆大小 .
因为 4139024384 不是 2M对齐的:4139024384 / (2*1024*1024) = 1973.640625. 向上取整后变成1974,所以 4139778048 / (2*1024*1024) = 1974
可以得出最终堆大小为4139778048,和-XX:+PrintFlagsFinal的4139778048一致
阅读全文
0 0
- JVM中的MaxHeapSize值不一致问题
- Tomcat 中的JVM问题
- Tomcat 中的JVM问题
- HDFS中的名称空间ID不一致问题 分享
- Java汉字md5值不一致问题
- time zone 问题 / JVM time zone 和 OS(WIN7) 不一致
- linux下如何解决jvm执行取得的时间和系统时间不一致的问题
- struts2 session不一致问题
- 缓存不一致问题
- 双系统时间不一致问题
- version magic 不一致问题
- python 计算hash值与java不一致问题
- AndroidManifest文件中的版本号与代码中得到的版本号不一致问题及解决办法
- sql语句中的字段类型与sql表字段类型不一致可能引起的性能问题
- VS端口不一致的问题
- hive datanucleus cache 不一致问题
- 解决编码不一致的问题
- 双系统(Linux)时间不一致问题
- pt-table-checksum主从一致性校验工具
- 安装java环境
- AngularJS内幕详解之 Scope
- 路由策略管理
- 记录第一天~
- JVM中的MaxHeapSize值不一致问题
- Mybatis(一)
- iOS-响应者链条
- MFC 树控件 如何为二级节点动态地添加三、四级节点
- 查找算法(3)--二叉树查找
- 2001: [Hnoi2010]City 城市建设
- Android ListView初始化简单分析
- 16+-号的用途
- UITableView常用设置