src/share/vm/memory/collectorPolicy.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/memory/collectorPolicy.hpp
src/share/vm/memory/collectorPolicy.hpp
Print this page
*** 64,80 ****
--- 64,92 ----
// Requires that the concrete subclass sets the alignment constraints
// before calling.
virtual void initialize_flags();
virtual void initialize_size_info();
+ virtual void assert_flags();
+ virtual void assert_size_info();
+
+ virtual void initialize_all() {
+ initialize_flags();
+ initialize_size_info();
+ }
+
size_t _initial_heap_byte_size;
size_t _max_heap_byte_size;
size_t _min_heap_byte_size;
size_t _min_alignment;
size_t _max_alignment;
+ // Needed to keep information if MaxHeapSize was set on the command line
+ // when the flag value is aligned etc by ergonomics.
+ bool _max_heap_size_cmdline;
+
// The sizing of the heap is controlled by a sizing policy.
AdaptiveSizePolicy* _size_policy;
// Set to true when policy wants soft refs cleared.
// Reset to false by gc after it clears all soft refs.
*** 91,100 ****
--- 103,113 ----
_min_alignment(1),
_max_alignment(1),
_initial_heap_byte_size(0),
_max_heap_byte_size(0),
_min_heap_byte_size(0),
+ _max_heap_size_cmdline(false),
_size_policy(NULL),
_should_clear_all_soft_refs(false),
_all_soft_refs_clear(false)
{}
*** 194,203 ****
--- 207,219 ----
// Returns true if a collector has eden space with soft end.
virtual bool has_soft_ended_eden() {
return false;
}
+ // Do any updates required to global flags that are due to heap initialization
+ // changes.
+ virtual void post_heap_initialize() = 0;
};
class ClearedAllSoftRefs : public StackObj {
bool _clear_all_soft_refs;
CollectorPolicy* _collector_policy;
*** 228,250 ****
--- 244,275 ----
virtual bool should_try_older_generation_allocation(size_t word_size) const;
void initialize_flags();
void initialize_size_info();
+ void assert_flags();
+ void assert_size_info();
+
// Try to allocate space by expanding the heap.
virtual HeapWord* expand_heap_and_allocate(size_t size, bool is_tlab);
+ // Compute max heap alignment.
+ size_t compute_max_alignment();
+
// Scale the base_size by NewRatio according to
// result = base_size / (NewRatio + 1)
// and align by min_alignment()
size_t scale_by_NewRatio_aligned(size_t base_size);
// Bound the value by the given maximum minus the
// min_alignment.
size_t bound_minus_alignment(size_t desired_size, size_t maximum_size);
public:
+ GenCollectorPolicy() : CollectorPolicy(), _min_gen0_size(0), _initial_gen0_size(0),
+ _max_gen0_size(0), _generations(NULL) {}
+
// Accessors
size_t min_gen0_size() { return _min_gen0_size; }
size_t initial_gen0_size() { return _initial_gen0_size; }
size_t max_gen0_size() { return _max_gen0_size; }
*** 255,269 ****
return _generations;
}
virtual GenCollectorPolicy* as_generation_policy() { return this; }
! virtual void initialize_generations() = 0;
virtual void initialize_all() {
! initialize_flags();
! initialize_size_info();
initialize_generations();
}
HeapWord* mem_allocate_work(size_t size,
bool is_tlab,
--- 280,293 ----
return _generations;
}
virtual GenCollectorPolicy* as_generation_policy() { return this; }
! virtual void initialize_generations() { };
virtual void initialize_all() {
! CollectorPolicy::initialize_all();
initialize_generations();
}
HeapWord* mem_allocate_work(size_t size,
bool is_tlab,
*** 273,282 ****
--- 297,316 ----
// Adaptive size policy
virtual void initialize_size_policy(size_t init_eden_size,
size_t init_promo_size,
size_t init_survivor_size);
+
+ virtual void post_heap_initialize() {
+ assert(_max_gen0_size == MaxNewSize, "Wasn't this taken care of earlier?");
+ }
+
+ // The alignment used for eden and survivors within the young gen
+ // and for boundary between young gen and old gen.
+ static size_t intra_heap_alignment() {
+ return 64 * K * HeapWordSize;
+ }
};
// All of hotspot's current collectors are subtypes of this
// class. Currently, these collectors all use the same gen[0],
// but have different gen[1] types. If we add another subtype
*** 289,301 ****
size_t _initial_gen1_size;
size_t _max_gen1_size;
void initialize_flags();
void initialize_size_info();
! void initialize_generations() { ShouldNotReachHere(); }
public:
// Accessors
size_t min_gen1_size() { return _min_gen1_size; }
size_t initial_gen1_size() { return _initial_gen1_size; }
size_t max_gen1_size() { return _max_gen1_size; }
--- 323,340 ----
size_t _initial_gen1_size;
size_t _max_gen1_size;
void initialize_flags();
void initialize_size_info();
!
! void assert_flags();
! void assert_size_info();
public:
+ TwoGenerationCollectorPolicy() : GenCollectorPolicy(), _min_gen1_size(0),
+ _initial_gen1_size(0), _max_gen1_size(0) {}
+
// Accessors
size_t min_gen1_size() { return _min_gen1_size; }
size_t initial_gen1_size() { return _initial_gen1_size; }
size_t max_gen1_size() { return _max_gen1_size; }
src/share/vm/memory/collectorPolicy.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File