Our java version is 6u32 ,an old version. Actually The patch can only fix the exception list in the last email. Now our system has closed UseAdaptiveSizePolicy while using CMS, it’s runs happily.
Regards hongxi 发件人: Bengt Rutisson [mailto:bengt.rutis...@oracle.com] 发送时间: 2013年3月19日 14:53 收件人: daniel.daughe...@oracle.com 抄送: 洪熙(hongxi); serviceability-dev@openjdk.java.net; hotspot-gc-...@openjdk.java.net 主题: Re: Committed should not larger than max_size in ContiguousSpacePool while using ParNew with UseAdaptiveSizePolicy Hi Hongxi Thanks for supplying the patch. What Java version are you using? I think that using adaptive sizing with ParNew has never worked very well. In fact this feature has been disabled in the main branch about a year ago (I think it went in to 7u4). See: 7112413 : JVM Crash, possibly GC-related http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7112413 So, I would not recommend using -XX:+UseAdaptiveSizePolicy with -XX:+UseConcMarkSweepGC. The only supported GC for adaptive size policy is the parallel GC. Even with your patch I think you will see crashes if you continue running with the command line you supplied. I have only looked briefly at your patch, but I think that it may be hiding a problem more than fixing it. I think we should in fact have max size set up properly. If capacity turns out to be larger than max size we have a real problem. Just hiding this by updating the max size seems a bit scary to me. Bengt On 3/19/13 3:48 AM, Daniel D. Daugherty wrote: Hongxi, I'm redirecting this message to the HotSpot GC OpenJDK alias and the Serviceability OpenJDK alias. JMX is owned by the Serviceability team and you've also got some GC questions here... Dan P.S. Bcc'ed the Runtime OpenJDK so you folks know that this message has been redirected... On 3/18/13 7:59 PM, 洪熙(hongxi) wrote: Hi all: Sorry if here is not the right place to submit this small fix. Days ago, some of our systems occur this exception: 2013-01-22 16:59:07,351 ERROR protocol.MBeanServerMessageHandler {141} - handle message error objectName=com.alibaba.dragoon:type=GC javax.management.RuntimeErrorException: java.lang.InternalError: Memory Pool not found at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrow(DefaultMBeanServerInterceptor.java:858) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrowMaybeMBeanException(DefaultMBeanServerInterceptor.java:869) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:670) at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638) at com.alibaba.dragoon.common.protocol.MBeanServerMessageHandler.getAttributeInternal(MBeanServerMessageHandler.java:242) at com.alibaba.dragoon.common.protocol.MBeanServerMessageHandler.handle(MBeanServerMessageHandler.java:113) at com.alibaba.dragoon.common.protocol.MessageHandlerAdapter.handle(MessageHandlerAdapter.java:53) at com.alibaba.dragoon.common.protocol.DragoonSession.receiveMessageIntenal(DragoonSession.java:204) at com.alibaba.dragoon.common.protocol.DragoonSession.receiveMessage(DragoonSession.java:178) at com.alibaba.dragoon.common.protocol.transport.socket.SocketSessionImpl$1.run(SocketSessionImpl.java:211) Caused by: java.lang.InternalError: Memory Pool not found at sun.management.MemoryPoolImpl.getUsage0(Native Method) at sun.management.MemoryPoolImpl.getUsage(MemoryPoolImpl.java:77) at com.alibaba.dragoon.client.jmx.GC.getEdenSpaceUsed(GC.java:185) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:93) at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:27) at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208) at com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:65) at com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:216) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666) ... 7 more The jvm argument is as bellow: /usr/java/bin/java -server -Xmx5g -Xms5g -Xmn512m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCompressedOops -XX:ParallelGCThreads=4 -XX:+UseAdaptiveSizePolicy -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=localhost -Dhummock.output.logs=/home/admin/output/logs -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true At last, we found it’s possible a jvm bug, when UseAdaptiveSizePolicy + ParNew, if the eden is expanded the max size of eden’s ContiguousSpacePool will not be updated, perhaps the commited is larger than max_size. Though at last I know UseAdaptiveSizePolicy has some problems with CMS and it has been disabled in the latest jdk7u, I think I should submit a patch to fix this small bug. My patch is in the attachment. Regrads hongxi ________________________________ This email (including any attachments) is confidential and may be legally privileged. If you received this email in error, please delete it immediately and do not copy it or use it for any purpose or disclose its contents to any other person. Thank you. 本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人,请您立即删除本邮件。请不要将本电邮进行复制并用作任 何其 他用途、或透露本邮件之内容。谢谢。 ________________________________ This email (including any attachments) is confidential and may be legally privileged. If you received this email in error, please delete it immediately and do not copy it or use it for any purpose or disclose its contents to any other person. Thank you. 本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人,请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或透露本邮件之内容。谢谢。