changeset 55745:fa337ff85b9a

8227692: Remove develop feature PrintMallocStatistics Reviewed-by: coleenp, dcubed
author mdoerr
date Fri, 19 Jul 2019 10:18:48 +0200
parents 59d56b8b1a80
children 709913d8ace9
files src/hotspot/share/memory/allocation.cpp src/hotspot/share/memory/allocation.hpp src/hotspot/share/memory/allocation.inline.hpp src/hotspot/share/memory/arena.cpp src/hotspot/share/memory/arena.hpp src/hotspot/share/runtime/globals.hpp src/hotspot/share/runtime/java.cpp
diffstat 7 files changed, 6 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/share/memory/allocation.cpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/memory/allocation.cpp	Fri Jul 19 10:18:48 2019 +0200
@@ -259,25 +259,6 @@
   st->print("AllocatedObj(" INTPTR_FORMAT ")", p2i(this));
 }
 
-AllocStats::AllocStats() {
-  start_mallocs      = os::num_mallocs;
-  start_frees        = os::num_frees;
-  start_malloc_bytes = os::alloc_bytes;
-  start_mfree_bytes  = os::free_bytes;
-  start_res_bytes    = Arena::_bytes_allocated;
-}
-
-julong  AllocStats::num_mallocs() { return os::num_mallocs - start_mallocs; }
-julong  AllocStats::alloc_bytes() { return os::alloc_bytes - start_malloc_bytes; }
-julong  AllocStats::num_frees()   { return os::num_frees - start_frees; }
-julong  AllocStats::free_bytes()  { return os::free_bytes - start_mfree_bytes; }
-julong  AllocStats::resource_bytes() { return Arena::_bytes_allocated - start_res_bytes; }
-void    AllocStats::print() {
-  tty->print_cr(UINT64_FORMAT " mallocs (" UINT64_FORMAT "MB), "
-                UINT64_FORMAT " frees (" UINT64_FORMAT "MB), " UINT64_FORMAT "MB resrc",
-                num_mallocs(), alloc_bytes()/M, num_frees(), free_bytes()/M, resource_bytes()/M);
-}
-
 ReallocMark::ReallocMark() {
 #ifdef ASSERT
   Thread *thread = Thread::current();
--- a/src/hotspot/share/memory/allocation.hpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/memory/allocation.hpp	Fri Jul 19 10:18:48 2019 +0200
@@ -507,23 +507,6 @@
 #define FREE_C_HEAP_OBJ(objname)\
   FreeHeap((char*)objname);
 
-// for statistics
-#ifndef PRODUCT
-class AllocStats : StackObj {
-  julong start_mallocs, start_frees;
-  julong start_malloc_bytes, start_mfree_bytes, start_res_bytes;
- public:
-  AllocStats();
-
-  julong num_mallocs();    // since creation of receiver
-  julong alloc_bytes();
-  julong num_frees();
-  julong free_bytes();
-  julong resource_bytes();
-  void   print();
-};
-#endif
-
 
 //------------------------------ReallocMark---------------------------------
 // Code which uses REALLOC_RESOURCE_ARRAY should check an associated
--- a/src/hotspot/share/memory/allocation.inline.hpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/memory/allocation.inline.hpp	Fri Jul 19 10:18:48 2019 +0200
@@ -34,16 +34,13 @@
 // Explicit C-heap memory management
 
 #ifndef PRODUCT
-// Increments unsigned long value for statistics (not atomic on MP).
+// Increments unsigned long value for statistics (not atomic on MP, but avoids word-tearing on 32 bit).
 inline void inc_stat_counter(volatile julong* dest, julong add_value) {
-#if defined(SPARC) || defined(X86)
-  // Sparc and X86 have atomic jlong (8 bytes) instructions
+#ifdef _LP64
+  *dest += add_value;
+#else
   julong value = Atomic::load(dest);
-  value += add_value;
-  Atomic::store(value, dest);
-#else
-  // possible word-tearing during load/store
-  *dest += add_value;
+  Atomic::store(value + add_value, dest);
 #endif
 }
 #endif
--- a/src/hotspot/share/memory/arena.cpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/memory/arena.cpp	Fri Jul 19 10:18:48 2019 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -475,10 +475,6 @@
 
 #ifndef PRODUCT
 
-julong Arena::_bytes_allocated = 0;
-
-void Arena::inc_bytes_allocated(size_t x) { inc_stat_counter(&_bytes_allocated, x); }
-
 // debugging code
 inline void Arena::free_all(char** start, char** end) {
   for (char** p = start; p < end; p++) if (*p) os::free(*p);
--- a/src/hotspot/share/memory/arena.hpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/memory/arena.hpp	Fri Jul 19 10:18:48 2019 +0200
@@ -106,11 +106,8 @@
   void* grow(size_t x, AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM);
   size_t _size_in_bytes;        // Size of arena (used for native memory tracking)
 
-  NOT_PRODUCT(static julong _bytes_allocated;) // total #bytes allocated since start
-  friend class AllocStats;
   debug_only(void* malloc(size_t size);)
   debug_only(void* internal_malloc_4(size_t x);)
-  NOT_PRODUCT(void inc_bytes_allocated(size_t x);)
 
   void signal_out_of_memory(size_t request, const char* whence) const;
 
@@ -148,7 +145,6 @@
     debug_only(if (UseMallocOnly) return malloc(x);)
     if (!check_for_overflow(x, "Arena::Amalloc", alloc_failmode))
       return NULL;
-    NOT_PRODUCT(inc_bytes_allocated(x);)
     if (_hwm + x > _max) {
       return grow(x, alloc_failmode);
     } else {
@@ -163,7 +159,6 @@
     debug_only(if (UseMallocOnly) return malloc(x);)
     if (!check_for_overflow(x, "Arena::Amalloc_4", alloc_failmode))
       return NULL;
-    NOT_PRODUCT(inc_bytes_allocated(x);)
     if (_hwm + x > _max) {
       return grow(x, alloc_failmode);
     } else {
@@ -185,7 +180,6 @@
 #endif
     if (!check_for_overflow(x, "Arena::Amalloc_D", alloc_failmode))
       return NULL;
-    NOT_PRODUCT(inc_bytes_allocated(x);)
     if (_hwm + x > _max) {
       return grow(x, alloc_failmode); // grow() returns a result aligned >= 8 bytes.
     } else {
--- a/src/hotspot/share/runtime/globals.hpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/runtime/globals.hpp	Fri Jul 19 10:18:48 2019 +0200
@@ -466,9 +466,6 @@
   develop(bool, UseMallocOnly, false,                                       \
           "Use only malloc/free for allocation (no resource area/arena)")   \
                                                                             \
-  develop(bool, PrintMallocStatistics, false,                               \
-          "Print malloc/free statistics")                                   \
-                                                                            \
   develop(bool, ZapResourceArea, trueInDebug,                               \
           "Zap freed resource/arena space with 0xABABABAB")                 \
                                                                             \
--- a/src/hotspot/share/runtime/java.cpp	Thu Jul 18 14:01:54 2019 +0200
+++ b/src/hotspot/share/runtime/java.cpp	Fri Jul 19 10:18:48 2019 +0200
@@ -203,9 +203,6 @@
   }
 }
 
-AllocStats alloc_stats;
-
-
 
 // General statistics printing (profiling ...)
 void print_statistics() {
@@ -329,11 +326,6 @@
   }
 
   print_bytecode_count();
-  if (PrintMallocStatistics) {
-    tty->print("allocation stats: ");
-    alloc_stats.print();
-    tty->cr();
-  }
 
   if (PrintSystemDictionaryAtExit) {
     ResourceMark rm;