Mercurial > hg > graal-compiler
comparison src/share/vm/memory/generation.hpp @ 9072:8617e38bb4cb
8008508: CMS does not correctly reduce heap size after a Full GC
Reviewed-by: johnc, ysr
author | jmasa |
---|---|
date | Mon, 11 Feb 2013 10:31:56 -0800 |
parents | da91efe96a93 |
children | 71180a6e5080 |
comparison
equal
deleted
inserted
replaced
9071:68fe50d4f1d5 | 9072:8617e38bb4cb |
---|---|
632 // This is shared with other generations. | 632 // This is shared with other generations. |
633 GenRemSet* _rs; | 633 GenRemSet* _rs; |
634 // This is local to this generation. | 634 // This is local to this generation. |
635 BlockOffsetSharedArray* _bts; | 635 BlockOffsetSharedArray* _bts; |
636 | 636 |
637 // current shrinking effect: this damps shrinking when the heap gets empty. | |
638 size_t _shrink_factor; | |
639 | |
640 size_t _min_heap_delta_bytes; // Minimum amount to expand. | |
641 | |
642 // Some statistics from before gc started. | |
643 // These are gathered in the gc_prologue (and should_collect) | |
644 // to control growing/shrinking policy in spite of promotions. | |
645 size_t _capacity_at_prologue; | |
646 size_t _used_at_prologue; | |
647 | |
637 CardGeneration(ReservedSpace rs, size_t initial_byte_size, int level, | 648 CardGeneration(ReservedSpace rs, size_t initial_byte_size, int level, |
638 GenRemSet* remset); | 649 GenRemSet* remset); |
639 | 650 |
640 public: | 651 public: |
641 | 652 |
642 // Attempt to expand the generation by "bytes". Expand by at a | 653 // Attempt to expand the generation by "bytes". Expand by at a |
643 // minimum "expand_bytes". Return true if some amount (not | 654 // minimum "expand_bytes". Return true if some amount (not |
644 // necessarily the full "bytes") was done. | 655 // necessarily the full "bytes") was done. |
645 virtual bool expand(size_t bytes, size_t expand_bytes); | 656 virtual bool expand(size_t bytes, size_t expand_bytes); |
657 | |
658 // Shrink generation with specified size (returns false if unable to shrink) | |
659 virtual void shrink(size_t bytes) = 0; | |
660 | |
661 virtual void compute_new_size(); | |
646 | 662 |
647 virtual void clear_remembered_set(); | 663 virtual void clear_remembered_set(); |
648 | 664 |
649 virtual void invalidate_remembered_set(); | 665 virtual void invalidate_remembered_set(); |
650 | 666 |
665 friend class VMStructs; | 681 friend class VMStructs; |
666 // Abstractly, this is a subtype that gets access to protected fields. | 682 // Abstractly, this is a subtype that gets access to protected fields. |
667 friend class VM_PopulateDumpSharedSpace; | 683 friend class VM_PopulateDumpSharedSpace; |
668 | 684 |
669 protected: | 685 protected: |
670 size_t _min_heap_delta_bytes; // Minimum amount to expand. | |
671 ContiguousSpace* _the_space; // actual space holding objects | 686 ContiguousSpace* _the_space; // actual space holding objects |
672 WaterMark _last_gc; // watermark between objects allocated before | 687 WaterMark _last_gc; // watermark between objects allocated before |
673 // and after last GC. | 688 // and after last GC. |
674 | 689 |
675 // Grow generation with specified size (returns false if unable to grow) | 690 // Grow generation with specified size (returns false if unable to grow) |
686 // Accessing spaces | 701 // Accessing spaces |
687 ContiguousSpace* the_space() const { return _the_space; } | 702 ContiguousSpace* the_space() const { return _the_space; } |
688 | 703 |
689 public: | 704 public: |
690 OneContigSpaceCardGeneration(ReservedSpace rs, size_t initial_byte_size, | 705 OneContigSpaceCardGeneration(ReservedSpace rs, size_t initial_byte_size, |
691 size_t min_heap_delta_bytes, | |
692 int level, GenRemSet* remset, | 706 int level, GenRemSet* remset, |
693 ContiguousSpace* space) : | 707 ContiguousSpace* space) : |
694 CardGeneration(rs, initial_byte_size, level, remset), | 708 CardGeneration(rs, initial_byte_size, level, remset), |
695 _the_space(space), _min_heap_delta_bytes(min_heap_delta_bytes) | 709 _the_space(space) |
696 {} | 710 {} |
697 | 711 |
698 inline bool is_in(const void* p) const; | 712 inline bool is_in(const void* p) const; |
699 | 713 |
700 // Space enquiries | 714 // Space enquiries |