博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UseAdaptiveSizePolicy 选项引起Memory pool not found异常。
阅读量:4612 次
发布时间:2019-06-09

本文共 710 字,大约阅读时间需要 2 分钟。

Memory pool not found异常是mbean的异常,所以出现这个异常一定是使用了mbean.

开始怀疑的情况是JVM还没有初始化,agent中的mbean已经开始获取状态,或者JVM将要crash之前,mbean获取不到正确状态,但都没有这些情况 。

后来taobao-jdk团队进行分析,原因出在UseAdaptiveSizePolicy上。

大概原因:

在使用cms算法下,如果开启参数UseAdaptiveSizePolicy,则每次minor gc后会重新计算eden,from和to的大小,计算过程依据的是gc过程统计的一些数据,计算后的eden+from+to不会超过Xmx,同时from和to一般是不相等(初始化的时候from和to是相等的)。主要问题在于计算完后,如果eden变大,ContiguousSpacePool里面的max_eden_size并没有被更新,还是最开始时候的值,这样导致jvm在通过call_special调用java.lang.management. MemoryUsage的构造函数的时候会产生exception,产生exception的原因是eden的committed 大于 eden的max_size,导致返回java.lang.management. MemoryUsage对象失败,最终导致产生显示异常。

sun的jdk到目前并没有修改该bug。

解决办法:可以先设置 –XX:-UseAdaptiveSizePolicy来workaround。

转载于:https://www.cnblogs.com/maxwellyu/p/3456076.html

你可能感兴趣的文章
33.promise future多线程通信
查看>>
基础篇-1.1走进Java世界
查看>>
CAN现场总线
查看>>
kubernetes-部署(单机,使用证书)
查看>>
构建之法阅读笔记03
查看>>
ssh免密登录问题
查看>>
Docker
查看>>
外网映射工具
查看>>
Spiral Matrix
查看>>
132模式
查看>>
ch4 背景图像基础
查看>>
Fedora 9 安装vmware tools无kernel-devel的问题
查看>>
SmartARM3250新旧液晶问题
查看>>
在混合app开发过程中使用百度地图api的出现坐标偏差的解决
查看>>
wxPython--基础组件-文本框样例
查看>>
mysql数据库常用命令笔记
查看>>
VC初学问题
查看>>
POJ 1833 排列
查看>>
Codeforces Round #459 (Div. 2) AB
查看>>
ubuntu下Gradle离线安装
查看>>