37 size_t _npages;
38 size_t _total;
39 size_t _live;
40 size_t _garbage;
41 size_t _empty;
42 size_t _compacting_from;
43 size_t _compacting_to;
44
45 public:
46 ZRelocationSetSelectorGroupStats();
47
48 size_t npages() const;
49 size_t total() const;
50 size_t live() const;
51 size_t garbage() const;
52 size_t empty() const;
53 size_t compacting_from() const;
54 size_t compacting_to() const;
55 };
56
57 class ZRelocationSetSelectorGroup {
58 private:
59 const char* const _name;
60 const size_t _page_size;
61 const size_t _object_size_limit;
62 const size_t _fragmentation_limit;
63
64 ZArray<ZPage*> _registered_pages;
65 ZPage** _sorted_pages;
66 size_t _nselected;
67 ZRelocationSetSelectorGroupStats _stats;
68
69 void semi_sort();
70
71 public:
72 ZRelocationSetSelectorGroup(const char* name,
73 size_t page_size,
74 size_t object_size_limit);
75 ~ZRelocationSetSelectorGroup();
76
80
81 ZPage* const* selected() const;
82 size_t nselected() const;
83
84 const ZRelocationSetSelectorGroupStats& stats() const;
85 };
86
87 class ZRelocationSetSelector : public StackObj {
88 private:
89 ZRelocationSetSelectorGroup _small;
90 ZRelocationSetSelectorGroup _medium;
91 ZRelocationSetSelectorGroup _large;
92
93 public:
94 ZRelocationSetSelector();
95
96 void register_live_page(ZPage* page);
97 void register_garbage_page(ZPage* page);
98 void select(ZRelocationSet* relocation_set);
99
100 const ZRelocationSetSelectorGroupStats& stats_small() const;
101 const ZRelocationSetSelectorGroupStats& stats_medium() const;
102 const ZRelocationSetSelectorGroupStats& stats_large() const;
103 };
104
105 #endif // SHARE_GC_Z_ZRELOCATIONSETSELECTOR_HPP
|
37 size_t _npages;
38 size_t _total;
39 size_t _live;
40 size_t _garbage;
41 size_t _empty;
42 size_t _compacting_from;
43 size_t _compacting_to;
44
45 public:
46 ZRelocationSetSelectorGroupStats();
47
48 size_t npages() const;
49 size_t total() const;
50 size_t live() const;
51 size_t garbage() const;
52 size_t empty() const;
53 size_t compacting_from() const;
54 size_t compacting_to() const;
55 };
56
57 class ZRelocationSetSelectorStats {
58 friend class ZRelocationSetSelector;
59
60 private:
61 ZRelocationSetSelectorGroupStats _small;
62 ZRelocationSetSelectorGroupStats _medium;
63 ZRelocationSetSelectorGroupStats _large;
64
65 public:
66 const ZRelocationSetSelectorGroupStats& small() const;
67 const ZRelocationSetSelectorGroupStats& medium() const;
68 const ZRelocationSetSelectorGroupStats& large() const;
69 };
70
71 class ZRelocationSetSelectorGroup {
72 private:
73 const char* const _name;
74 const size_t _page_size;
75 const size_t _object_size_limit;
76 const size_t _fragmentation_limit;
77
78 ZArray<ZPage*> _registered_pages;
79 ZPage** _sorted_pages;
80 size_t _nselected;
81 ZRelocationSetSelectorGroupStats _stats;
82
83 void semi_sort();
84
85 public:
86 ZRelocationSetSelectorGroup(const char* name,
87 size_t page_size,
88 size_t object_size_limit);
89 ~ZRelocationSetSelectorGroup();
90
94
95 ZPage* const* selected() const;
96 size_t nselected() const;
97
98 const ZRelocationSetSelectorGroupStats& stats() const;
99 };
100
101 class ZRelocationSetSelector : public StackObj {
102 private:
103 ZRelocationSetSelectorGroup _small;
104 ZRelocationSetSelectorGroup _medium;
105 ZRelocationSetSelectorGroup _large;
106
107 public:
108 ZRelocationSetSelector();
109
110 void register_live_page(ZPage* page);
111 void register_garbage_page(ZPage* page);
112 void select(ZRelocationSet* relocation_set);
113
114 ZRelocationSetSelectorStats stats() const;
115 };
116
117 #endif // SHARE_GC_Z_ZRELOCATIONSETSELECTOR_HPP
|