--- a/src/hotspot/share/services/virtualMemoryTracker.cpp Tue Sep 26 14:05:27 2017 +0200
+++ b/src/hotspot/share/services/virtualMemoryTracker.cpp Thu Sep 28 09:56:54 2017 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, 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
@@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
+#include "memory/metaspace.hpp"
#include "runtime/atomic.hpp"
#include "runtime/os.hpp"
#include "runtime/threadCritical.hpp"
@@ -492,3 +493,35 @@
return true;
}
+
+// Metaspace Support
+MetaspaceSnapshot::MetaspaceSnapshot() {
+ for (int index = (int)Metaspace::ClassType; index < (int)Metaspace::MetadataTypeCount; index ++) {
+ Metaspace::MetadataType type = (Metaspace::MetadataType)index;
+ assert_valid_metadata_type(type);
+ _reserved_in_bytes[type] = 0;
+ _committed_in_bytes[type] = 0;
+ _used_in_bytes[type] = 0;
+ _free_in_bytes[type] = 0;
+ }
+}
+
+void MetaspaceSnapshot::snapshot(Metaspace::MetadataType type, MetaspaceSnapshot& mss) {
+ assert_valid_metadata_type(type);
+
+ mss._reserved_in_bytes[type] = MetaspaceAux::reserved_bytes(type);
+ mss._committed_in_bytes[type] = MetaspaceAux::committed_bytes(type);
+ mss._used_in_bytes[type] = MetaspaceAux::used_bytes(type);
+
+ size_t free_in_bytes = (MetaspaceAux::capacity_bytes(type) - MetaspaceAux::used_bytes(type))
+ + MetaspaceAux::free_chunks_total_bytes(type)
+ + MetaspaceAux::free_bytes(type);
+ mss._free_in_bytes[type] = free_in_bytes;
+}
+
+void MetaspaceSnapshot::snapshot(MetaspaceSnapshot& mss) {
+ snapshot(Metaspace::ClassType, mss);
+ if (Metaspace::using_class_space()) {
+ snapshot(Metaspace::NonClassType, mss);
+ }
+}