src/hotspot/share/memory/metaspace/metaspaceCommon.hpp
changeset 53970 1ad7c590a6e7
parent 53244 9807daeb47c4
child 54820 fcf83b204c27
--- a/src/hotspot/share/memory/metaspace/metaspaceCommon.hpp	Fri Mar 01 10:15:04 2019 +0000
+++ b/src/hotspot/share/memory/metaspace/metaspaceCommon.hpp	Sun Feb 10 09:10:42 2019 +0100
@@ -25,6 +25,7 @@
 #ifndef SHARE_MEMORY_METASPACE_METASPACECOMMON_HPP
 #define SHARE_MEMORY_METASPACE_METASPACECOMMON_HPP
 
+#include "utilities/align.hpp"
 #include "utilities/debug.hpp"
 #include "utilities/globalDefinitions.hpp"
 
@@ -85,6 +86,14 @@
   uintx num_external_deallocs;
   // Number of times an allocation was satisfied from deallocated blocks.
   uintx num_allocs_from_deallocated_blocks;
+  // Number of times a chunk was added to the freelist
+  uintx num_chunks_added_to_freelist;
+  // Number of times a chunk was removed from the freelist
+  uintx num_chunks_removed_from_freelist;
+  // Number of chunk merges
+  uintx num_chunk_merges;
+  // Number of chunk splits
+  uintx num_chunk_splits;
 };
 extern internal_statistics_t g_internal_statistics;
 #endif
@@ -111,6 +120,16 @@
 // Returns a descriptive name for a chunk type.
 const char* chunk_size_name(ChunkIndex index);
 
+// Verify chunk sizes.
+inline bool is_valid_chunksize(bool is_class, size_t size) {
+  const size_t reasonable_maximum_humongous_chunk_size = 1 * G;
+  return is_aligned(size, sizeof(MetaWord)) &&
+         size < reasonable_maximum_humongous_chunk_size &&
+         is_class ?
+             (size == ClassSpecializedChunk || size == ClassSmallChunk || size >= ClassMediumChunk) :
+             (size == SpecializedChunk || size == SmallChunk || size >= MediumChunk);
+}
+
 // Verify chunk type.
 inline bool is_valid_chunktype(ChunkIndex index) {
   return index == SpecializedIndex || index == SmallIndex ||