comparison src/share/vm/memory/generation.hpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents d2a62e0f25eb
children 8617e38bb4cb
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
46 // several threads 46 // several threads
47 // - CardGeneration - abstract class adding offset array behavior 47 // - CardGeneration - abstract class adding offset array behavior
48 // - OneContigSpaceCardGeneration - abstract class holding a single 48 // - OneContigSpaceCardGeneration - abstract class holding a single
49 // contiguous space with card marking 49 // contiguous space with card marking
50 // - TenuredGeneration - tenured (old object) space (markSweepCompact) 50 // - TenuredGeneration - tenured (old object) space (markSweepCompact)
51 // - CompactingPermGenGen - reflective object area (klasses, methods, symbols, ...)
52 // - ConcurrentMarkSweepGeneration - Mostly Concurrent Mark Sweep Generation 51 // - ConcurrentMarkSweepGeneration - Mostly Concurrent Mark Sweep Generation
53 // (Detlefs-Printezis refinement of 52 // (Detlefs-Printezis refinement of
54 // Boehm-Demers-Schenker) 53 // Boehm-Demers-Schenker)
55 // 54 //
56 // The system configurations currently allowed are: 55 // The system configurations currently allowed are:
57 // 56 //
58 // DefNewGeneration + TenuredGeneration + PermGeneration 57 // DefNewGeneration + TenuredGeneration
59 // DefNewGeneration + ConcurrentMarkSweepGeneration + ConcurrentMarkSweepPermGen 58 // DefNewGeneration + ConcurrentMarkSweepGeneration
60 // 59 //
61 // ParNewGeneration + TenuredGeneration + PermGeneration 60 // ParNewGeneration + TenuredGeneration
62 // ParNewGeneration + ConcurrentMarkSweepGeneration + ConcurrentMarkSweepPermGen 61 // ParNewGeneration + ConcurrentMarkSweepGeneration
63 // 62 //
64 63
65 class DefNewGeneration; 64 class DefNewGeneration;
66 class GenerationSpec; 65 class GenerationSpec;
67 class CompactibleSpace; 66 class CompactibleSpace;
440 virtual void update_gc_stats(int current_level, bool full) {} 439 virtual void update_gc_stats(int current_level, bool full) {}
441 440
442 // Mark sweep support phase2 441 // Mark sweep support phase2
443 virtual void prepare_for_compaction(CompactPoint* cp); 442 virtual void prepare_for_compaction(CompactPoint* cp);
444 // Mark sweep support phase3 443 // Mark sweep support phase3
445 virtual void pre_adjust_pointers() {ShouldNotReachHere();}
446 virtual void adjust_pointers(); 444 virtual void adjust_pointers();
447 // Mark sweep support phase4 445 // Mark sweep support phase4
448 virtual void compact(); 446 virtual void compact();
449 virtual void post_compact() {ShouldNotReachHere();} 447 virtual void post_compact() {ShouldNotReachHere();}
450 448
536 534
537 // Iteration. 535 // Iteration.
538 536
539 // Iterate over all the ref-containing fields of all objects in the 537 // Iterate over all the ref-containing fields of all objects in the
540 // generation, calling "cl.do_oop" on each. 538 // generation, calling "cl.do_oop" on each.
541 virtual void oop_iterate(OopClosure* cl); 539 virtual void oop_iterate(ExtendedOopClosure* cl);
542 540
543 // Same as above, restricted to the intersection of a memory region and 541 // Same as above, restricted to the intersection of a memory region and
544 // the generation. 542 // the generation.
545 virtual void oop_iterate(MemRegion mr, OopClosure* cl); 543 virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
546 544
547 // Iterate over all objects in the generation, calling "cl.do_object" on 545 // Iterate over all objects in the generation, calling "cl.do_object" on
548 // each. 546 // each.
549 virtual void object_iterate(ObjectClosure* cl); 547 virtual void object_iterate(ObjectClosure* cl);
550 548
664 // Garbage collection is performed using mark-compact. 662 // Garbage collection is performed using mark-compact.
665 663
666 class OneContigSpaceCardGeneration: public CardGeneration { 664 class OneContigSpaceCardGeneration: public CardGeneration {
667 friend class VMStructs; 665 friend class VMStructs;
668 // Abstractly, this is a subtype that gets access to protected fields. 666 // Abstractly, this is a subtype that gets access to protected fields.
669 friend class CompactingPermGen;
670 friend class VM_PopulateDumpSharedSpace; 667 friend class VM_PopulateDumpSharedSpace;
671 668
672 protected: 669 protected:
673 size_t _min_heap_delta_bytes; // Minimum amount to expand. 670 size_t _min_heap_delta_bytes; // Minimum amount to expand.
674 ContiguousSpace* _the_space; // actual space holding objects 671 ContiguousSpace* _the_space; // actual space holding objects