The document discusses Java class and method data structures stored in the permanent generation area of memory. It describes the fields within the Klass, instanceKlass, and methodOopDesc structures that represent classes and methods. It also discusses full garbage collection and minor garbage collection stack traces.
8. void GenMarkSweep::mark_sweep_phase1(int level,
bool clear_all_softrefs) {
:
GenCollectedHeap* gch = GenCollectedHeap::heap();
:
gch->gen_process_strong_roots(level,
false, // Younger gens are not roots.
true, // activate StrongRootsScope
true, // Collecting permanent generation.
SharedHeap::SO_SystemClasses,
&follow_root_closure,
true, // walk code active on stacks
&follow_root_closure);
9. java class をあらわすデータ構造 method area (perm) にある。
class instanceKlass klassOopDesc 0x9c false
field instanceKlass _array_klasses 0 4 klassOop
field instanceKlass _methods 4 4 objArrayOop
:
field instanceKlass _fields 0x14 4 typeArrayOop
field instanceKlass _constants 0x18 4 constantPoolOop
field instanceKlass _class_loader 0x1c 4 oop
field instanceKlass _protection_domain 0x20 4 oop
field instanceKlass _signers 0x24 4 objArrayOop
field instanceKlass _source_file_name 0x28 4 symbolOop
field instanceKlass _inner_classes 0x30 4 typeArrayOop
field instanceKlass _implementor 0x34 4 klassOop
field instanceKlass _generic_signature 0x38 4 symbolOop
field instanceKlass _class_annotations 0x3c 4 typeArrayOop
field instanceKlass _fields_annotations 0x40 4 objArrayOop
field instanceKlass _methods_annotations 0x44 4 objArrayOop
field instanceKlass _methods_parameter_annotations 0x48 4 objArrayOop
field instanceKlass _methods_default_annotations 0x4c 4 objArrayOop
10. *Klass 系の物の先頭にある部分
class Klass Klass_vtbl 0x54 true
field Klass _super_check_offset 0 4 juint
:
field Klass _primary_supers 0xc 0x20 klassOop[8]
field Klass _size_helper 0x2c 4 int
field Klass _java_mirror 0x30 4 oop
field Klass _modifier_flags 0x34 4 jint
field Klass _super 0x38 4 klassOop
field Klass _name 0x3c 4 symbolOop
field Klass _access_flags 0x40 4 AccessFlags
field Klass _subklass 0x44 4 klassOop
field Klass _next_sibling 0x48 4 klassOop
field Klass _alloc_count 0x4c 4 juint
field Klass _is_objArray 0x50 1 bool
11. メソッドを表すクラス
class methodOopDesc oopDesc 0x58 false
field methodOopDesc _constMethod 0 4 constMethodOop
field methodOopDesc _constants 4 4 constantPoolOop
field methodOopDesc _method_data 8 4 methodDataOop
field methodOopDesc _interpreter_invocation_count 0xc 4 int
field methodOopDesc _access_flags 0x10 4 AccessFlags
field methodOopDesc _vtable_index 0x14 4 int
:
field methodOopDesc _method_size 0x18 2 u2
field methodOopDesc _max_stack 0x1a 2 u2
field methodOopDesc _max_locals 0x1c 2 u2
field methodOopDesc _size_of_parameters 0x1e 2 u2
:
field methodOopDesc _i2i_entry 0x40 4 address
field methodOopDesc _adapter 0x44 4 AdapterHandlerEntry*
field methodOopDesc _from_compiled_entry 0x48 4 address
field methodOopDesc _code 0x4c 4 nmethod*
field methodOopDesc _from_interpreted_entry 0x50 4 address