Mercurial > hg > truffle
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 |