sjohanss@7137: /* sjohanss@7137: * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. sjohanss@7137: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. sjohanss@7137: * sjohanss@7137: * This code is free software; you can redistribute it and/or modify it sjohanss@7137: * under the terms of the GNU General Public License version 2 only, as sjohanss@7137: * published by the Free Software Foundation. sjohanss@7137: * sjohanss@7137: * This code is distributed in the hope that it will be useful, but WITHOUT sjohanss@7137: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or sjohanss@7137: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License sjohanss@7137: * version 2 for more details (a copy is included in the LICENSE file that sjohanss@7137: * accompanied this code). sjohanss@7137: * sjohanss@7137: * You should have received a copy of the GNU General Public License version sjohanss@7137: * 2 along with this work; if not, write to the Free Software Foundation, sjohanss@7137: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. sjohanss@7137: * sjohanss@7137: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA sjohanss@7137: * or visit www.oracle.com if you need additional information or have any sjohanss@7137: * questions. sjohanss@7137: * sjohanss@7137: */ sjohanss@7137: sjohanss@7137: #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONBOUNDS_HPP sjohanss@7137: #define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONBOUNDS_HPP sjohanss@7137: sjohanss@7137: class HeapRegionBounds : public AllStatic { sjohanss@7137: private: sjohanss@7137: // Minimum region size; we won't go lower than that. sjohanss@7137: // We might want to decrease this in the future, to deal with small sjohanss@7137: // heaps a bit more efficiently. sjohanss@7137: static const size_t MIN_REGION_SIZE = 1024 * 1024; sjohanss@7137: sjohanss@7137: // Maximum region size; we don't go higher than that. There's a good sjohanss@7137: // reason for having an upper bound. We don't want regions to get too sjohanss@7137: // large, otherwise cleanup's effectiveness would decrease as there sjohanss@7137: // will be fewer opportunities to find totally empty regions after sjohanss@7137: // marking. sjohanss@7137: static const size_t MAX_REGION_SIZE = 32 * 1024 * 1024; sjohanss@7137: sjohanss@7137: // The automatic region size calculation will try to have around this sjohanss@7137: // many regions in the heap (based on the min heap size). sjohanss@7137: static const size_t TARGET_REGION_NUMBER = 2048; sjohanss@7137: sjohanss@7137: public: sjohanss@7137: static inline size_t min_size(); sjohanss@7137: static inline size_t max_size(); sjohanss@7137: static inline size_t target_number(); sjohanss@7137: }; sjohanss@7137: sjohanss@7137: #endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONBOUNDS_HPP