--- old/src/hotspot/share/gc/z/zHeap.cpp 2019-05-02 09:57:45.274909157 +0200 +++ new/src/hotspot/share/gc/z/zHeap.cpp 2019-05-02 09:57:45.051901792 +0200 @@ -45,6 +45,7 @@ #include "logging/log.hpp" #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" +#include "runtime/arguments.hpp" #include "runtime/safepoint.hpp" #include "runtime/thread.hpp" #include "utilities/align.hpp" @@ -62,7 +63,7 @@ ZHeap::ZHeap() : _workers(), _object_allocator(_workers.nworkers()), - _page_allocator(heap_min_size(), heap_max_size(), heap_max_reserve_size()), + _page_allocator(heap_min_size(), heap_initial_size(), heap_max_size(), heap_max_reserve_size()), _page_table(), _forwarding_table(), _mark(&_workers, &_page_table), @@ -81,8 +82,13 @@ } size_t ZHeap::heap_min_size() const { - const size_t aligned_min_size = align_up(InitialHeapSize, ZGranuleSize); - return MIN2(aligned_min_size, heap_max_size()); + const size_t aligned_min_size = align_up(Arguments::min_heap_size(), ZGranuleSize); + return MAX2(MIN2(aligned_min_size, heap_max_size()), heap_max_reserve_size()); +} + +size_t ZHeap::heap_initial_size() const { + const size_t aligned_initial_size = align_up(InitialHeapSize, ZGranuleSize); + return MAX2(MIN2(aligned_initial_size, heap_max_size()), heap_min_size()); } size_t ZHeap::heap_max_size() const { @@ -102,7 +108,7 @@ } size_t ZHeap::min_capacity() const { - return heap_min_size(); + return _page_allocator.min_capacity(); } size_t ZHeap::max_capacity() const { @@ -250,6 +256,10 @@ _page_allocator.free_page(page, reclaimed); } +uint64_t ZHeap::uncommit(uint64_t delay) { + return _page_allocator.uncommit(delay); +} + void ZHeap::before_flip() { if (ZVerifyViews) { // Unmap all pages