On 21 jan 2013, at 08:30, David Holmes <david.hol...@oracle.com> wrote:
> On 21/01/2013 5:11 PM, Staffan Larsen wrote: >> A webrev is here: http://cr.openjdk.java.net/~sla/8005278/webrev.00/ > > Thanks. > > So based on the error message the actual fix here seems to be in > > src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp > > where we add: > > nonstatic_field(CompactibleFreeListSpace,_dictionary,FreeBlockDictionary<FreeChunk>*) Yes, this is the real fix (as well as the fix in agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java). > So I am still missing why we needed to change the BinaryTreeDictionary > to AFLBinaryTreeDictionary ? I'm unclear whether the typedef in the > vmStructs needs to be used in the SA code or whether the SA should just > be referring to the real type ?? Not clear to me, either. The initialize() code in BinaryTreeDictionary.java said 43 Type type = db.lookupType("BinaryTreeDictionary"); 44 totalSizeField = type.getCIntegerField("_totalSize"); This needs to change to 43 Type type = db.lookupType("AFLBinaryTreeDictionary"); 44 totalSizeField = type.getCIntegerField("_total_size"); For the code to work. I think the change on line 43 is because vmStructs_cms.hpp declares "AFLBinaryTreeDictionary" as the exported type name: declare_type(AFLBinaryTreeDictionary, FreeBlockDictionary<FreeChunk>) vmStructs could have exported "BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>" as the type name. In any case BinaryTreeDictionary.java can only be one of the templated instances of BinaryTreeDictionary<> in the C++ code (at least that is how I think it works - are there other examples of how templated classes are handled in SA?). Thus, renaming it to the name of the exported type name makes sense. Thanks, /Staffan > > Assuming we do need to rename this then hg mv should be used (which > seems not to be the case in the webrev) > > This problem seems to have been introduced with > > changeset: 3767:685df3c6f84b > parent: 3758:d0e7716b179e > user: jmasa > date: Tue Sep 18 23:35:42 2012 -0700 > summary: 7045397: NPG: Add freelists to class loader arenas. > > So I've added Jon to the cc list. > > Thanks, > David > >> /Staffan >> >> On 21 jan 2013, at 05:00, David Holmes<david.hol...@oracle.com> wrote: >> >>> On 21/01/2013 1:06 PM, 云达 wrote: >>>> Actually I just changed "BinaryTreeDictionary" to >>>> "AFLBinaryTreeDictionary", since there is no definition of >>>> BinaryTreeDictionary in the latest hotspot: >>>> http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/file/b5f6465019f6/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp >>>> , which has been changed to AFLBinaryTreeDictionary. So the code in SA >>>> has to change too. The bug is already found here: >>>> http://bugs.sun.com/view_bug.do?bug_id=8005278 >>> >>> I'm still missing some pieces here. We have: >>> >>> typedef BinaryTreeDictionary<FreeChunk, AdaptiveFreeList> >>> AFLBinaryTreeDictionary; >>> >>> in vmStructs and we have: >>> >>> ./share/vm/memory/binaryTreeDictionary.hpp/cpp >>> >>> and we have: >>> >>> src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java >>> >>> So I'm unclear what is causing the problem here. >>> >>> Staffan: can you generate a webrev from this patch to make the context >>> clearer please? >>> >>> Thanks, >>> David >>> >>>> Regards, >>>> Yunda >>>> -----邮件原件----- >>>> 发件人: David Holmes [mailto:david.hol...@oracle.com] >>>> 发送时间: 2013年1月21日 10:45 >>>> 收件人: 云达 >>>> 抄送: Staffan Larsen; serviceability-dev@openjdk.java.net >>>> 主题: Re: 答复: Errors when use "universe" command in CLHSDB >>>> >>>> I couldn't quite understand the problem and fix from the patch. Why do we >>>> need to add AFLBinaryTreeDictionary ?? >>>> >>>> Thanks, >>>> David >>>> >>>> On 21/01/2013 12:03 PM, 云达 wrote: >>>>> Thanks for your review again. Could someone with Reviewer status help >>>>> me with this? Thanks in advance! >>>>> >>>>> Regards, >>>>> >>>>> Yunda >>>>> >>>>> *发件人:*Staffan Larsen [mailto:staffan.lar...@oracle.com] >>>>> *发送时间:*2013年1月18日20:14 >>>>> *收件人:*云达 >>>>> *抄送:*daniel.daughe...@oracle.com; serviceability-dev@openjdk.java.net >>>>> *主题:*Re: Errors when use "universe" command in CLHSDB >>>>> >>>>> This patch applied cleanly. >>>>> >>>>> I can sponsor this fix, but we still need a review from someone with >>>>> Reviewer status. Once we have that, I can push the change. >>>>> >>>>> Thanks, >>>>> >>>>> /Staffan >>>>> >>>>> On 18 jan 2013, at 11:22, 云达<yunda....@taobao.com >>>>> <mailto:yunda....@taobao.com>> wrote: >>>>> >>>>> >>>>> >>>>> OK. I diffed it with the >>>>> latesthttp://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/and I hope it >>>>> works. Thanks for the review! >>>>> >>>>> Regards, >>>>> >>>>> Yunda >>>>> >>>>> *发件人:*Staffan Larsen [mailto:staffan.lar...@oracle.com >>>>> <http://oracle.com>] >>>>> *发送时间:*2013年1月18日17:07 >>>>> *收件人:*云达 >>>>> *抄送:*daniel.daughe...@oracle.com<mailto:daniel.daughe...@oracle.com>; >>>>> serviceability-dev@openjdk.java.net >>>>> <mailto:serviceability-dev@openjdk.java.net> >>>>> *主题:*Re: Errors when use "universe" command in CLHSDB >>>>> >>>>> Yunda, >>>>> >>>>> I think this fixes http://bugs.sun.com/view_bug.do?bug_id=8005278 >>>>> >>>>> The changes look good to me. I couldn't apply the patch to the code >>>>> cleanly, however (see below). Perhaps the patch was broken in email? >>>>> Can you regenerate the patch and include it as a zipped attachment? >>>>> >>>>> Thanks, >>>>> >>>>> /Staffan >>>>> >>>>> file >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary >>>>> .java >>>>> already exists >>>>> 1 out of 1 hunks FAILED -- saving rejects to file >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary >>>>> .java.rej >>>>> patching file >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpac >>>>> e.java >>>>> Hunk #1 FAILED at 116 >>>>> Hunk #2 FAILED at 40 >>>>> 2 out of 2 hunks FAILED -- saving rejects to file >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpac >>>>> e.java.rej >>>>> patching file >>>>> src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp >>>>> Hunk #1 succeeded at 45 with fuzz 2 (offset 0 lines). >>>>> patch failed, unable to continue (try -v) patch failed, rejects left >>>>> in working dir >>>>> >>>>> On 18 jan 2013, at 04:54,云达<yunda....@taobao.com >>>>> <mailto:yunda....@taobao.com>> wrote: >>>>> >>>>> >>>>> >>>>> >>>>> Thanks Dan! >>>>> >>>>> Regards, >>>>> >>>>> Yunda >>>>> >>>>> *发件人:*Daniel D. Daugherty [mailto:daniel.daughe...@oracle.com >>>>> <http://oracle.com>] >>>>> *发送时间:*2013年1月18日10:46 >>>>> *收件人:*云达;serviceability-dev@openjdk.java.net >>>>> <mailto:serviceability-dev@openjdk.java.net> >>>>> *主题:*Re: Errors when use "universe" command in CLHSDB >>>>> >>>>> Yunda, >>>>> >>>>> The Serviceability Agent is maintained by the Serviceability team. >>>>> I'm adding that alias to this e-mail thread (and Bcc'ing the Runtime >>>>> alias. >>>>> >>>>> Dan >>>>> >>>>> On 1/17/13 7:42 PM,云达wrote: >>>>> >>>>> Hi all, >>>>> >>>>> This is Yunda<yunda....@taobao.com> >>>>> <mailto:yunda....@taobao.com>from Alibaba Group(with OCA). >>>>> >>>>> When I used CLHSDB( java -classpath .:$JAVA_HOME/lib/sa-jdi.jar >>>>> sun.jvm.hotspot.CLHSDB) I found two errors below(the second error >>>>> occurred after I made some fix). It seemed that some code about CMS >>>>> in SA didn’t change accordingly. >>>>> >>>>> hsdb> universe >>>>> >>>>> Heap Parameters: >>>>> >>>>> Gen 0: eden >>>>> [0x0000000609200000,0x00000006094aeb90,0x0000000611820000) space >>>>> capacity = 140640256, 2.000007736049627 used >>>>> >>>>> from [0x0000000611820000,0x0000000611820000,0x00000006128e0000) >>>>> space capacity = 17563648, 0.0 used >>>>> >>>>> to [0x00000006128e0000,0x00000006128e0000,0x00000006139a0000) space >>>>> capacity = 17563648, 0.0 usedInvocations: 0 >>>>> >>>>> Gen 1: concurrent mark-sweep generation >>>>> >>>>> Exception in thread "main" java.lang.ExceptionInInitializerError >>>>> >>>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>> Method) >>>>> >>>>> at >>>>> >>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructo >>>>> rAccessorImpl.java:57) >>>>> >>>>> at >>>>> >>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCo >>>>> nstructorAccessorImpl.java:45) >>>>> >>>>> at java.lang.reflect.Constructor.newInstance(Constructor.java:395) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.runtime.VMObjectFactory.newObject(VMObjectFactory.java >>>>> :58) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.cmsSpace(Concurre >>>>> ntMarkSweepGeneration.java:55) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.printOn(Concurren >>>>> tMarkSweepGeneration.java:79) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.GenCollectedHeap.printOn(GenCollectedHeap.java: >>>>> 139) >>>>> >>>>> at >>>>> sun.jvm.hotspot.CommandProcessor$48.doit(CommandProcessor.java:1605) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java: >>>>> 1897) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java: >>>>> 1867) >>>>> >>>>> at >>>>> sun.jvm.hotspot.CommandProcessor.run(CommandProcessor.java:1747) >>>>> >>>>> at sun.jvm.hotspot.CLHSDB.run(CLHSDB.java:91) >>>>> >>>>> at sun.jvm.hotspot.CLHSDB.main(CLHSDB.java:35) >>>>> >>>>> Caused by: java.lang.RuntimeException: field "_dictionary" not found >>>>> in type CompactibleFreeListSpace >>>>> >>>>> at >>>>> sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:183) >>>>> >>>>> at >>>>> sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:190) >>>>> >>>>> at >>>>> sun.jvm.hotspot.types.basic.BasicType.getField(BasicType.java:194) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.types.basic.BasicType.getAddressField(BasicType.java:2 >>>>> 82) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.initialize(Compactible >>>>> FreeListSpace.java:69) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.access$000(Compactible >>>>> FreeListSpace.java:35) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace$1.update(CompactibleFr >>>>> eeListSpace.java:55) >>>>> >>>>> at >>>>> sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:402) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.<clinit>(CompactibleFr >>>>> eeListSpace.java:53) >>>>> >>>>> ... 14 more >>>>> >>>>> hsdb> universe >>>>> >>>>> Heap Parameters: >>>>> >>>>> Gen 0: eden >>>>> [0x0000000609200000,0x00000006094aeb90,0x0000000611820000) space >>>>> capacity = 140640256, 2.000007736049627 used >>>>> >>>>> from [0x0000000611820000,0x0000000611820000,0x00000006128e0000) >>>>> space capacity = 17563648, 0.0 used >>>>> >>>>> to [0x00000006128e0000,0x00000006128e0000,0x00000006139a0000) space >>>>> capacity = 17563648, 0.0 usedInvocations: 0 >>>>> >>>>> Gen 1: concurrent mark-sweep generation >>>>> >>>>> free-list-space[ 0x000000064cb90000 , 0x0000000661ad0000 ) Exception >>>>> in thread "main" java.lang.ExceptionInInitializerError >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.free(CompactibleFreeLi >>>>> stSpace.java:112) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.used(CompactibleFreeLi >>>>> stSpace.java:95) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.CompactibleFreeListSpace.printOn(CompactibleFre >>>>> eListSpace.java:137) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.ConcurrentMarkSweepGeneration.printOn(Concurren >>>>> tMarkSweepGeneration.java:79) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.memory.GenCollectedHeap.printOn(GenCollectedHeap.java: >>>>> 139) >>>>> >>>>> at >>>>> sun.jvm.hotspot.CommandProcessor$48.doit(CommandProcessor.java:1605) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java: >>>>> 1897) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java: >>>>> 1867) >>>>> >>>>> at >>>>> sun.jvm.hotspot.CommandProcessor.run(CommandProcessor.java:1747) >>>>> >>>>> at sun.jvm.hotspot.CLHSDB.run(CLHSDB.java:91) >>>>> >>>>> at sun.jvm.hotspot.CLHSDB.main(CLHSDB.java:35) >>>>> >>>>> Caused by: java.lang.RuntimeException: No type named "FreeList" in >>>>> database >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.types.basic.BasicTypeDataBase.lookupType(BasicTypeData >>>>> Base.java:80) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.HotSpotTypeDataBase.lookupType(HotSpotTypeDataBase.jav >>>>> a:134) >>>>> >>>>> at >>>>> >>>>> sun.jvm.hotspot.types.basic.BasicTypeDataBase.lookupType(BasicTypeData >>>>> Base.java:74) >>>>> >>>>> at sun.jvm.hotspot.memory.FreeList.initialize(FreeList.java:44) >>>>> >>>>> at sun.jvm.hotspot.memory.FreeList.access$000(FreeList.java:34) >>>>> >>>>> at sun.jvm.hotspot.memory.FreeList$1.update(FreeList.java:38) >>>>> >>>>> at >>>>> sun.jvm.hotspot.runtime.VM.registerVMInitializedObserver(VM.java:402) >>>>> >>>>> at sun.jvm.hotspot.memory.FreeList.<clinit>(FreeList.java:36) >>>>> >>>>> ... 11 more >>>>> >>>>> So I made a patch to fix them and now “universe” command works well. >>>>> Could someone help to review the patch below? >>>>> >>>>> diff -r b14da2e6f2dc -r 8652e04889a4 >>>>> >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary >>>>> .java >>>>> >>>>> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >>>>> >>>>> +++ >>>>> >>>>> b/agent/src/share/classes/sun/jvm/hotspot/memory/AFLBinaryTreeDictionary.java >>>>> Fri Jan 18 09:56:06 2013 +0800 >>>>> >>>>> @@ -0,0 +1,59 @@ >>>>> >>>>> +/* >>>>> >>>>> + * @(#)AFLBinaryTreeDictionary.java >>>>> >>>>> + * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All >>>>> rights reserved. >>>>> >>>>> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >>>>> >>>>> + * >>>>> >>>>> + * This code is free software; you can redistribute it and/or >>>>> modify it >>>>> >>>>> + * under the terms of the GNU General Public License version 2 >>>>> only, as >>>>> >>>>> + * published by the Free Software Foundation. >>>>> >>>>> + * >>>>> >>>>> + * This code is distributed in the hope that it will be useful, but >>>>> WITHOUT >>>>> >>>>> + * ANY WARRANTY; without even the implied warranty of >>>>> MERCHANTABILITY or >>>>> >>>>> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public >>>>> License >>>>> >>>>> + * version 2 for more details (a copy is included in the LICENSE >>>>> file that >>>>> >>>>> + * accompanied this code). >>>>> >>>>> + * >>>>> >>>>> + * You should have received a copy of the GNU General Public >>>>> License version >>>>> >>>>> + * 2 along with this work; if not, write to the Free Software >>>>> Foundation, >>>>> >>>>> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >>>>> >>>>> + * >>>>> >>>>> + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA >>>>> 94065 USA >>>>> >>>>> + * or visitwww.oracle.com<http://www.oracle.com>if you need >>>>> additional information or have any >>>>> >>>>> + * questions. >>>>> >>>>> + * >>>>> >>>>> + */ >>>>> >>>>> + >>>>> >>>>> +package sun.jvm.hotspot.memory; >>>>> >>>>> + >>>>> >>>>> +import java.util.*; >>>>> >>>>> +import sun.jvm.hotspot.debugger.*; >>>>> >>>>> +import sun.jvm.hotspot.types.*; >>>>> >>>>> +import sun.jvm.hotspot.runtime.*; >>>>> >>>>> + >>>>> >>>>> +public class AFLBinaryTreeDictionary extends VMObject { >>>>> >>>>> + static { >>>>> >>>>> + VM.registerVMInitializedObserver(new Observer() { >>>>> >>>>> + public void update(Observable o, Object data) { >>>>> >>>>> + initialize(VM.getVM().getTypeDataBase()); >>>>> >>>>> + } >>>>> >>>>> + }); >>>>> >>>>> + } >>>>> >>>>> + >>>>> >>>>> + private static synchronized void initialize(TypeDataBase db) { >>>>> >>>>> + Type type = db.lookupType("AFLBinaryTreeDictionary"); >>>>> >>>>> + totalSizeField = type.getCIntegerField("_total_size"); >>>>> >>>>> + } >>>>> >>>>> + >>>>> >>>>> + // Fields >>>>> >>>>> + private static CIntegerField totalSizeField; >>>>> >>>>> + >>>>> >>>>> + // Accessors >>>>> >>>>> + public long size() { >>>>> >>>>> + return totalSizeField.getValue(addr); >>>>> >>>>> + } >>>>> >>>>> + >>>>> >>>>> + // Constructor >>>>> >>>>> + public AFLBinaryTreeDictionary(Address addr) { >>>>> >>>>> + super(addr); >>>>> >>>>> + } >>>>> >>>>> +} >>>>> >>>>> diff -r b14da2e6f2dc -r 8652e04889a4 >>>>> >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.ja >>>>> va >>>>> >>>>> --- >>>>> >>>>> a/agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java >>>>> Thu Jan 17 13:40:31 2013 -0500 >>>>> >>>>> +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 >>>>> >>>>> @@ -1,59 +0,0 @@ >>>>> >>>>> -/* >>>>> >>>>> - * @(#)BinaryTreeDictionary.java >>>>> >>>>> - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All >>>>> rights reserved. >>>>> >>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >>>>> >>>>> - * >>>>> >>>>> - * This code is free software; you can redistribute it and/or >>>>> modify it >>>>> >>>>> - * under the terms of the GNU General Public License version 2 >>>>> only, as >>>>> >>>>> - * published by the Free Software Foundation. >>>>> >>>>> - * >>>>> >>>>> - * This code is distributed in the hope that it will be useful, but >>>>> WITHOUT >>>>> >>>>> - * ANY WARRANTY; without even the implied warranty of >>>>> MERCHANTABILITY or >>>>> >>>>> - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public >>>>> License >>>>> >>>>> - * version 2 for more details (a copy is included in the LICENSE >>>>> file that >>>>> >>>>> - * accompanied this code). >>>>> >>>>> - * >>>>> >>>>> - * You should have received a copy of the GNU General Public >>>>> License version >>>>> >>>>> - * 2 along with this work; if not, write to the Free Software >>>>> Foundation, >>>>> >>>>> - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >>>>> >>>>> - * >>>>> >>>>> - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA >>>>> 94065 USA >>>>> >>>>> - * or visitwww.oracle.com<http://www.oracle.com>if you need >>>>> additional information or have any >>>>> >>>>> - * questions. >>>>> >>>>> - * >>>>> >>>>> - */ >>>>> >>>>> - >>>>> >>>>> -package sun.jvm.hotspot.memory; >>>>> >>>>> - >>>>> >>>>> -import java.util.*; >>>>> >>>>> -import sun.jvm.hotspot.debugger.*; >>>>> >>>>> -import sun.jvm.hotspot.types.*; >>>>> >>>>> -import sun.jvm.hotspot.runtime.*; >>>>> >>>>> - >>>>> >>>>> -public class BinaryTreeDictionary extends VMObject { >>>>> >>>>> - static { >>>>> >>>>> - VM.registerVMInitializedObserver(new Observer() { >>>>> >>>>> - public void update(Observable o, Object data) { >>>>> >>>>> - initialize(VM.getVM().getTypeDataBase()); >>>>> >>>>> - } >>>>> >>>>> - }); >>>>> >>>>> - } >>>>> >>>>> - >>>>> >>>>> - private static synchronized void initialize(TypeDataBase db) { >>>>> >>>>> - Type type = db.lookupType("BinaryTreeDictionary"); >>>>> >>>>> - totalSizeField = type.getCIntegerField("_totalSize"); >>>>> >>>>> - } >>>>> >>>>> - >>>>> >>>>> - // Fields >>>>> >>>>> - private static CIntegerField totalSizeField; >>>>> >>>>> - >>>>> >>>>> - // Accessors >>>>> >>>>> - public long size() { >>>>> >>>>> - return totalSizeField.getValue(addr); >>>>> >>>>> - } >>>>> >>>>> - >>>>> >>>>> - // Constructor >>>>> >>>>> - public BinaryTreeDictionary(Address addr) { >>>>> >>>>> - super(addr); >>>>> >>>>> - } >>>>> >>>>> -} >>>>> >>>>> diff -r b14da2e6f2dc -r 8652e04889a4 >>>>> >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpac >>>>> e.java >>>>> >>>>> --- >>>>> >>>>> a/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java >>>>> Thu Jan 17 13:40:31 2013 -0500 >>>>> >>>>> +++ >>>>> >>>>> b/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java >>>>> Fri Jan 18 09:56:06 2013 +0800 >>>>> >>>>> @@ -117,7 +117,7 @@ >>>>> >>>>> } >>>>> >>>>> // large block >>>>> >>>>> - BinaryTreeDictionary bfbd = (BinaryTreeDictionary) >>>>> VMObjectFactory.newObject(BinaryTreeDictionary.class, >>>>> >>>>> + AFLBinaryTreeDictionary bfbd = (AFLBinaryTreeDictionary) >>>>> VMObjectFactory.newObject(AFLBinaryTreeDictionary.class, >>>>> >>>>> dictionaryField.getValue(addr)); >>>>> >>>>> size += bfbd.size(); >>>>> >>>>> diff -r b14da2e6f2dc -r 8652e04889a4 >>>>> agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java >>>>> >>>>> --- a/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java >>>>> Thu Jan 17 13:40:31 2013 -0500 >>>>> >>>>> +++ b/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java >>>>> Fri Jan 18 09:56:06 2013 +0800 >>>>> >>>>> @@ -41,7 +41,7 @@ >>>>> >>>>> } >>>>> >>>>> private static synchronized void initialize(TypeDataBase db) { >>>>> >>>>> - Type type = db.lookupType("FreeList"); >>>>> >>>>> + Type type = db.lookupType("FreeList<FreeChunk>"); >>>>> >>>>> sizeField = type.getCIntegerField("_size"); >>>>> >>>>> countField = type.getCIntegerField("_count"); >>>>> >>>>> headerSize = type.getSize(); >>>>> >>>>> diff -r b14da2e6f2dc -r 8652e04889a4 >>>>> >>>>> src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp >>>>> >>>>> --- >>>>> a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp >>>>> Thu Jan 17 13:40:31 2013 -0500 >>>>> >>>>> +++ >>>>> b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp >>>>> Fri Jan 18 09:56:06 2013 +0800 >>>>> >>>>> @@ -43,7 +43,8 @@ >>>>> >>>>> nonstatic_field(LinearAllocBlock, _word_size, size_t) \ >>>>> >>>>> nonstatic_field(AFLBinaryTreeDictionary, _total_size, size_t) \ >>>>> >>>>> nonstatic_field(CompactibleFreeListSpace, _indexedFreeList[0], >>>>> FreeList<FreeChunk>) \ >>>>> >>>>> - nonstatic_field(CompactibleFreeListSpace, _smallLinearAllocBlock, >>>>> LinearAllocBlock) >>>>> >>>>> + nonstatic_field(CompactibleFreeListSpace, _smallLinearAllocBlock, >>>>> LinearAllocBlock) \ >>>>> >>>>> + nonstatic_field(CompactibleFreeListSpace, _dictionary, >>>>> FreeBlockDictionary<FreeChunk>*) >>>>> >>>>> #define VM_TYPES_CMS(declare_type, \ >>>>> >>>>> Regards, >>>>> >>>>> Yunda >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> -- >>>>> >>>>> >>>>> 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. >>>>> >>>>> 本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人, >>>>> 请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或透露本邮 >>>>> 件之内容。谢谢。 >>>>> >>>>> <tmp.zip> >>>>> >>>> >>>> ________________________________ >>>> >>>> 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. >>>> >>>> 本电邮(包括任何附件)可能含有机密资料并受法律保护。如您不是正确的收件人,请您立即删除本邮件。请不要将本电邮进行复制并用作任何其他用途、或透露本邮件之内容。谢谢。 >>