--- a/hotspot/src/share/vm/services/mallocSiteTable.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/mallocSiteTable.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -32,13 +32,14 @@
#include "services/allocationSite.hpp"
#include "services/mallocTracker.hpp"
#include "services/nmtCommon.hpp"
+#include "utilities/nativeCallStack.hpp"
// MallocSite represents a code path that eventually calls
// os::malloc() to allocate memory
class MallocSite : public AllocationSite<MemoryCounter> {
public:
MallocSite() :
- AllocationSite<MemoryCounter>(emptyStack) { }
+ AllocationSite<MemoryCounter>(NativeCallStack::EMPTY_STACK) { }
MallocSite(const NativeCallStack& stack) :
AllocationSite<MemoryCounter>(stack) { }
--- a/hotspot/src/share/vm/services/mallocTracker.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/mallocTracker.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -171,8 +171,9 @@
// Total malloc'd memory used by arenas
size_t total_arena() const;
- inline size_t thread_count() {
- return by_type(mtThreadStack)->malloc_count();
+ inline size_t thread_count() const {
+ MallocMemorySnapshot* s = const_cast<MallocMemorySnapshot*>(this);
+ return s->by_type(mtThreadStack)->malloc_count();
}
void reset();
--- a/hotspot/src/share/vm/services/memBaseline.cpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/memBaseline.cpp Wed Aug 20 21:37:50 2014 +0000
@@ -70,15 +70,13 @@
*/
class MallocAllocationSiteWalker : public MallocSiteWalker {
private:
- SortedLinkedList<MallocSite, compare_malloc_size, ResourceObj::ARENA>
- _malloc_sites;
+ SortedLinkedList<MallocSite, compare_malloc_size> _malloc_sites;
size_t _count;
// Entries in MallocSiteTable with size = 0 and count = 0,
// when the malloc site is not longer there.
public:
- MallocAllocationSiteWalker(Arena* arena) : _count(0), _malloc_sites(arena) {
- }
+ MallocAllocationSiteWalker() : _count(0) { }
inline size_t count() const { return _count; }
@@ -109,13 +107,12 @@
// Walk all virtual memory regions for baselining
class VirtualMemoryAllocationWalker : public VirtualMemoryWalker {
private:
- SortedLinkedList<ReservedMemoryRegion, compare_virtual_memory_base, ResourceObj::ARENA>
+ SortedLinkedList<ReservedMemoryRegion, compare_virtual_memory_base>
_virtual_memory_regions;
size_t _count;
public:
- VirtualMemoryAllocationWalker(Arena* a) : _count(0), _virtual_memory_regions(a) {
- }
+ VirtualMemoryAllocationWalker() : _count(0) { }
bool do_allocation_site(const ReservedMemoryRegion* rgn) {
if (rgn->size() >= MemBaseline::SIZE_THRESHOLD) {
@@ -136,39 +133,30 @@
bool MemBaseline::baseline_summary() {
- assert(_malloc_memory_snapshot == NULL, "Malloc baseline not yet reset");
- assert(_virtual_memory_snapshot == NULL, "Virtual baseline not yet reset");
-
- _malloc_memory_snapshot = new (arena()) MallocMemorySnapshot();
- _virtual_memory_snapshot = new (arena()) VirtualMemorySnapshot();
- if (_malloc_memory_snapshot == NULL || _virtual_memory_snapshot == NULL) {
- return false;
- }
- MallocMemorySummary::snapshot(_malloc_memory_snapshot);
- VirtualMemorySummary::snapshot(_virtual_memory_snapshot);
+ MallocMemorySummary::snapshot(&_malloc_memory_snapshot);
+ VirtualMemorySummary::snapshot(&_virtual_memory_snapshot);
return true;
}
bool MemBaseline::baseline_allocation_sites() {
- assert(arena() != NULL, "Just check");
// Malloc allocation sites
- MallocAllocationSiteWalker malloc_walker(arena());
+ MallocAllocationSiteWalker malloc_walker;
if (!MallocSiteTable::walk_malloc_site(&malloc_walker)) {
return false;
}
- _malloc_sites.set_head(malloc_walker.malloc_sites()->head());
+ _malloc_sites.move(malloc_walker.malloc_sites());
// The malloc sites are collected in size order
_malloc_sites_order = by_size;
// Virtual memory allocation sites
- VirtualMemoryAllocationWalker virtual_memory_walker(arena());
+ VirtualMemoryAllocationWalker virtual_memory_walker;
if (!VirtualMemoryTracker::walk_virtual_memory(&virtual_memory_walker)) {
return false;
}
// Virtual memory allocations are collected in call stack order
- _virtual_memory_allocations.set_head(virtual_memory_walker.virtual_memory_allocations()->head());
+ _virtual_memory_allocations.move(virtual_memory_walker.virtual_memory_allocations());
if (!aggregate_virtual_memory_allocation_sites()) {
return false;
@@ -180,11 +168,6 @@
}
bool MemBaseline::baseline(bool summaryOnly) {
- if (arena() == NULL) {
- _arena = new (std::nothrow, mtNMT) Arena(mtNMT);
- if (arena() == NULL) return false;
- }
-
reset();
_class_count = InstanceKlass::number_of_instance_classes();
@@ -211,8 +194,7 @@
}
bool MemBaseline::aggregate_virtual_memory_allocation_sites() {
- SortedLinkedList<VirtualMemoryAllocationSite, compare_allocation_site, ResourceObj::ARENA>
- allocation_sites(arena());
+ SortedLinkedList<VirtualMemoryAllocationSite, compare_allocation_site> allocation_sites;
VirtualMemoryAllocationIterator itr = virtual_memory_allocations();
const ReservedMemoryRegion* rgn;
@@ -230,12 +212,12 @@
site->commit_memory(rgn->committed_size());
}
- _virtual_memory_sites.set_head(allocation_sites.head());
+ _virtual_memory_sites.move(&allocation_sites);
return true;
}
MallocSiteIterator MemBaseline::malloc_sites(SortingOrder order) {
- assert(!_malloc_sites.is_empty(), "Detail baseline?");
+ assert(!_malloc_sites.is_empty(), "Not detail baseline");
switch(order) {
case by_size:
malloc_sites_to_size_order();
@@ -251,7 +233,7 @@
}
VirtualMemorySiteIterator MemBaseline::virtual_memory_sites(SortingOrder order) {
- assert(!_virtual_memory_sites.is_empty(), "Detail baseline?");
+ assert(!_virtual_memory_sites.is_empty(), "Not detail baseline");
switch(order) {
case by_size:
virtual_memory_sites_to_size_order();
@@ -270,8 +252,7 @@
// Sorting allocations sites in different orders
void MemBaseline::malloc_sites_to_size_order() {
if (_malloc_sites_order != by_size) {
- SortedLinkedList<MallocSite, compare_malloc_size, ResourceObj::ARENA>
- tmp(arena());
+ SortedLinkedList<MallocSite, compare_malloc_size> tmp;
// Add malloc sites to sorted linked list to sort into size order
tmp.move(&_malloc_sites);
@@ -283,8 +264,7 @@
void MemBaseline::malloc_sites_to_allocation_site_order() {
if (_malloc_sites_order != by_site) {
- SortedLinkedList<MallocSite, compare_malloc_site, ResourceObj::ARENA>
- tmp(arena());
+ SortedLinkedList<MallocSite, compare_malloc_site> tmp;
// Add malloc sites to sorted linked list to sort into site (address) order
tmp.move(&_malloc_sites);
_malloc_sites.set_head(tmp.head());
@@ -295,8 +275,7 @@
void MemBaseline::virtual_memory_sites_to_size_order() {
if (_virtual_memory_sites_order != by_size) {
- SortedLinkedList<VirtualMemoryAllocationSite, compare_virtual_memory_size, ResourceObj::ARENA>
- tmp(arena());
+ SortedLinkedList<VirtualMemoryAllocationSite, compare_virtual_memory_size> tmp;
tmp.move(&_virtual_memory_sites);
@@ -308,10 +287,9 @@
void MemBaseline::virtual_memory_sites_to_reservation_site_order() {
if (_virtual_memory_sites_order != by_size) {
- SortedLinkedList<VirtualMemoryAllocationSite, compare_virtual_memory_site, ResourceObj::ARENA>
- tmp(arena());
+ SortedLinkedList<VirtualMemoryAllocationSite, compare_virtual_memory_site> tmp;
- tmp.add(&_virtual_memory_sites);
+ tmp.move(&_virtual_memory_sites);
_virtual_memory_sites.set_head(tmp.head());
tmp.set_head(NULL);
--- a/hotspot/src/share/vm/services/memBaseline.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/memBaseline.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -61,28 +61,22 @@
};
private:
- // All baseline data is stored in this arena
- Arena* _arena;
-
// Summary information
- MallocMemorySnapshot* _malloc_memory_snapshot;
- VirtualMemorySnapshot* _virtual_memory_snapshot;
+ MallocMemorySnapshot _malloc_memory_snapshot;
+ VirtualMemorySnapshot _virtual_memory_snapshot;
size_t _class_count;
// Allocation sites information
// Malloc allocation sites
- LinkedListImpl<MallocSite, ResourceObj::ARENA>
- _malloc_sites;
+ LinkedListImpl<MallocSite> _malloc_sites;
// All virtual memory allocations
- LinkedListImpl<ReservedMemoryRegion, ResourceObj::ARENA>
- _virtual_memory_allocations;
+ LinkedListImpl<ReservedMemoryRegion> _virtual_memory_allocations;
// Virtual memory allocations by allocation sites, always in by_address
// order
- LinkedListImpl<VirtualMemoryAllocationSite, ResourceObj::ARENA>
- _virtual_memory_sites;
+ LinkedListImpl<VirtualMemoryAllocationSite> _virtual_memory_sites;
SortingOrder _malloc_sites_order;
SortingOrder _virtual_memory_sites_order;
@@ -93,30 +87,23 @@
// create a memory baseline
MemBaseline():
_baseline_type(Not_baselined),
- _class_count(0),
- _arena(NULL),
- _malloc_memory_snapshot(NULL),
- _virtual_memory_snapshot(NULL),
- _malloc_sites(NULL) {
+ _class_count(0) {
}
~MemBaseline() {
reset();
- if (_arena != NULL) {
- delete _arena;
- }
}
bool baseline(bool summaryOnly = true);
BaselineType baseline_type() const { return _baseline_type; }
- MallocMemorySnapshot* malloc_memory_snapshot() const {
- return _malloc_memory_snapshot;
+ MallocMemorySnapshot* malloc_memory_snapshot() {
+ return &_malloc_memory_snapshot;
}
- VirtualMemorySnapshot* virtual_memory_snapshot() const {
- return _virtual_memory_snapshot;
+ VirtualMemorySnapshot* virtual_memory_snapshot() {
+ return &_virtual_memory_snapshot;
}
MallocSiteIterator malloc_sites(SortingOrder order);
@@ -133,10 +120,8 @@
// memory
size_t total_reserved_memory() const {
assert(baseline_type() != Not_baselined, "Not yet baselined");
- assert(_virtual_memory_snapshot != NULL, "No virtual memory snapshot");
- assert(_malloc_memory_snapshot != NULL, "No malloc memory snapshot");
- size_t amount = _malloc_memory_snapshot->total() +
- _virtual_memory_snapshot->total_reserved();
+ size_t amount = _malloc_memory_snapshot.total() +
+ _virtual_memory_snapshot.total_reserved();
return amount;
}
@@ -144,32 +129,30 @@
// virtual memory
size_t total_committed_memory() const {
assert(baseline_type() != Not_baselined, "Not yet baselined");
- assert(_virtual_memory_snapshot != NULL,
- "Not a snapshot");
- size_t amount = _malloc_memory_snapshot->total() +
- _virtual_memory_snapshot->total_committed();
+ size_t amount = _malloc_memory_snapshot.total() +
+ _virtual_memory_snapshot.total_committed();
return amount;
}
size_t total_arena_memory() const {
assert(baseline_type() != Not_baselined, "Not yet baselined");
- assert(_malloc_memory_snapshot != NULL, "Not yet baselined");
- return _malloc_memory_snapshot->total_arena();
+ return _malloc_memory_snapshot.total_arena();
}
size_t malloc_tracking_overhead() const {
assert(baseline_type() != Not_baselined, "Not yet baselined");
- return _malloc_memory_snapshot->malloc_overhead()->size();
+ MemBaseline* bl = const_cast<MemBaseline*>(this);
+ return bl->_malloc_memory_snapshot.malloc_overhead()->size();
}
- const MallocMemory* malloc_memory(MEMFLAGS flag) const {
- assert(_malloc_memory_snapshot != NULL, "Not a snapshot");
- return _malloc_memory_snapshot->by_type(flag);
+ MallocMemory* malloc_memory(MEMFLAGS flag) {
+ assert(baseline_type() != Not_baselined, "Not yet baselined");
+ return _malloc_memory_snapshot.by_type(flag);
}
- const VirtualMemory* virtual_memory(MEMFLAGS flag) const {
- assert(_virtual_memory_snapshot != NULL, "Not a snapshot");
- return _virtual_memory_snapshot->by_type(flag);
+ VirtualMemory* virtual_memory(MEMFLAGS flag) {
+ assert(baseline_type() != Not_baselined, "Not yet baselined");
+ return _virtual_memory_snapshot.by_type(flag);
}
@@ -180,24 +163,19 @@
size_t thread_count() const {
assert(baseline_type() != Not_baselined, "Not yet baselined");
- assert(_malloc_memory_snapshot != NULL, "Baselined?");
- return _malloc_memory_snapshot->thread_count();
+ return _malloc_memory_snapshot.thread_count();
}
// reset the baseline for reuse
void reset() {
_baseline_type = Not_baselined;
- _malloc_memory_snapshot = NULL;
- _virtual_memory_snapshot = NULL;
+ _malloc_memory_snapshot.reset();
+ _virtual_memory_snapshot.reset();
_class_count = 0;
- _malloc_sites = NULL;
- _virtual_memory_sites = NULL;
- _virtual_memory_allocations = NULL;
-
- if (_arena != NULL) {
- _arena->destruct_contents();
- }
+ _malloc_sites.clear();
+ _virtual_memory_sites.clear();
+ _virtual_memory_allocations.clear();
}
private:
@@ -210,8 +188,6 @@
// Aggregate virtual memory allocation by allocation sites
bool aggregate_virtual_memory_allocation_sites();
- Arena* arena() { return _arena; }
-
// Sorting allocation sites in different orders
// Sort allocation sites in size order
void malloc_sites_to_size_order();
--- a/hotspot/src/share/vm/services/memTracker.cpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/memTracker.cpp Wed Aug 20 21:37:50 2014 +0000
@@ -39,8 +39,6 @@
volatile NMT_TrackingLevel MemTracker::_tracking_level = NMT_unknown;
NMT_TrackingLevel MemTracker::_cmdline_tracking_level = NMT_unknown;
-NativeCallStack emptyStack(0, false);
-
MemBaseline MemTracker::_baseline;
Mutex* MemTracker::_query_lock = NULL;
bool MemTracker::_is_nmt_env_valid = true;
@@ -69,6 +67,10 @@
os::unsetenv(buf);
}
+ // Construct NativeCallStack::EMPTY_STACK. It may get constructed twice,
+ // but it is benign, the results are the same.
+ ::new ((void*)&NativeCallStack::EMPTY_STACK) NativeCallStack(0, false);
+
if (!MallocTracker::initialize(level) ||
!VirtualMemoryTracker::initialize(level)) {
level = NMT_off;
--- a/hotspot/src/share/vm/services/memTracker.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/memTracker.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -26,14 +26,13 @@
#define SHARE_VM_SERVICES_MEM_TRACKER_HPP
#include "services/nmtCommon.hpp"
+#include "utilities/nativeCallStack.hpp"
-class NativeCallStack;
-extern NativeCallStack emptyStack;
#if !INCLUDE_NMT
-#define CURRENT_PC emptyStack
-#define CALLER_PC emptyStack
+#define CURRENT_PC NativeCallStack::EMPTY_STACK
+#define CALLER_PC NativeCallStack::EMPTY_STACK
class Tracker : public StackObj {
public:
@@ -83,9 +82,9 @@
extern volatile bool NMT_stack_walkable;
#define CURRENT_PC ((MemTracker::tracking_level() == NMT_detail && NMT_stack_walkable) ? \
- NativeCallStack(0, true) : emptyStack)
+ NativeCallStack(0, true) : NativeCallStack::EMPTY_STACK)
#define CALLER_PC ((MemTracker::tracking_level() == NMT_detail && NMT_stack_walkable) ? \
- NativeCallStack(1, true) : emptyStack)
+ NativeCallStack(1, true) : NativeCallStack::EMPTY_STACK)
class MemBaseline;
class Mutex;
--- a/hotspot/src/share/vm/services/nmtCommon.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/nmtCommon.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -50,9 +50,6 @@
// build time decision.
const int NMT_TrackingStackDepth = 4;
-class NativeCallStack;
-extern NativeCallStack emptyStack;
-
// A few common utilities for native memory tracking
class NMTUtil : AllStatic {
public:
--- a/hotspot/src/share/vm/services/virtualMemoryTracker.cpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/virtualMemoryTracker.cpp Wed Aug 20 21:37:50 2014 +0000
@@ -167,7 +167,7 @@
// higher part
address high_base = addr + sz;
size_t high_size = top - high_base;
- CommittedMemoryRegion high_rgn(high_base, high_size, emptyStack);
+ CommittedMemoryRegion high_rgn(high_base, high_size, NativeCallStack::EMPTY_STACK);
return add_committed_region(high_rgn);
} else {
return false;
@@ -337,10 +337,18 @@
*reserved_rgn = rgn;
return true;
- } else {
- ShouldNotReachHere();
- return false;
}
+
+ // CDS mapping region.
+ // CDS reserves the whole region for mapping CDS archive, then maps each section into the region.
+ // NMT reports CDS as a whole.
+ if (reserved_rgn->flag() == mtClassShared) {
+ assert(reserved_rgn->contain_region(base_addr, size), "Reserved CDS region should contain this mapping region");
+ return true;
+ }
+
+ ShouldNotReachHere();
+ return false;
}
}
}
--- a/hotspot/src/share/vm/services/virtualMemoryTracker.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/services/virtualMemoryTracker.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -320,7 +320,7 @@
ReservedMemoryRegion(address base, size_t size) :
- VirtualMemoryRegion(base, size), _stack(emptyStack), _flag(mtNone),
+ VirtualMemoryRegion(base, size), _stack(NativeCallStack::EMPTY_STACK), _flag(mtNone),
_all_committed(false) { }
// Copy constructor
--- a/hotspot/src/share/vm/utilities/nativeCallStack.cpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/utilities/nativeCallStack.cpp Wed Aug 20 21:37:50 2014 +0000
@@ -27,6 +27,7 @@
#include "utilities/globalDefinitions.hpp"
#include "utilities/nativeCallStack.hpp"
+const NativeCallStack NativeCallStack::EMPTY_STACK(0, false);
NativeCallStack::NativeCallStack(int toSkip, bool fillStack) :
_hash_value(0) {
--- a/hotspot/src/share/vm/utilities/nativeCallStack.hpp Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/src/share/vm/utilities/nativeCallStack.hpp Wed Aug 20 21:37:50 2014 +0000
@@ -52,6 +52,9 @@
* from it.
*/
class NativeCallStack : public StackObj {
+ public:
+ static const NativeCallStack EMPTY_STACK;
+
private:
address _stack[NMT_TrackingStackDepth];
int _hash_value;
--- a/hotspot/test/runtime/NMT/AutoshutdownNMT.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/AutoshutdownNMT.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt
* @summary Test for deprecated message if -XX:-AutoShutdownNMT is specified
* @library /testlibrary
- * @ignore
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/BaselineWithParameter.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/BaselineWithParameter.java Wed Aug 20 21:37:50 2014 +0000
@@ -27,7 +27,6 @@
* @key nmt jcmd regression
* @summary Regression test for invoking a jcmd with baseline=false, result was that the target VM crashed
* @library /testlibrary
- * @ignore
* @run main/othervm -XX:NativeMemoryTracking=detail BaselineWithParameter
*/
--- a/hotspot/test/runtime/NMT/CommandLineDetail.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/CommandLineDetail.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt
* @summary Running with NMT detail should not result in an error
* @library /testlibrary
- * @ignore
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/CommandLineEmptyArgument.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/CommandLineEmptyArgument.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,7 @@
* @key nmt
* @summary Empty argument to NMT should result in an informative error message
* @library /testlibrary
- * @ignore
+ * @ignore 8055051
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/CommandLineInvalidArgument.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/CommandLineInvalidArgument.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt
* @summary Invalid argument to NMT should result in an informative error message
* @library /testlibrary
- * @ignore
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/CommandLineSummary.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/CommandLineSummary.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt
* @summary Running with NMT summary should not result in an error
* @library /testlibrary
- * @ignore
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/CommandLineTurnOffNMT.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/CommandLineTurnOffNMT.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt
* @summary Turning off NMT should not result in an error
* @library /testlibrary
- * @ignore
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/JcmdBaselineDetail.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/JcmdBaselineDetail.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @summary Verify that jcmd correctly reports that baseline succeeds with NMT enabled with detailed tracking.
* @library /testlibrary
- * @ignore
* @run main/othervm -XX:NativeMemoryTracking=detail JcmdBaselineDetail
*/
--- a/hotspot/test/runtime/NMT/JcmdScale.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/JcmdScale.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @summary Test the NMT scale parameter
* @library /testlibrary
- * @ignore
* @run main/othervm -XX:NativeMemoryTracking=summary JcmdScale
*/
--- a/hotspot/test/runtime/NMT/JcmdScaleDetail.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/JcmdScaleDetail.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @summary Test the NMT scale parameter with detail tracking level
* @library /testlibrary
- * @ignore
* @run main/othervm -XX:NativeMemoryTracking=detail JcmdScaleDetail
*/
--- a/hotspot/test/runtime/NMT/JcmdSummaryDiff.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/JcmdSummaryDiff.java Wed Aug 20 21:37:50 2014 +0000
@@ -27,7 +27,6 @@
* @key nmt jcmd
* @library /testlibrary /testlibrary/whitebox
* @build JcmdSummaryDiff
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=summary JcmdSummaryDiff
*/
--- a/hotspot/test/runtime/NMT/JcmdWithNMTDisabled.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/JcmdWithNMTDisabled.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @summary Verify that jcmd correctly reports that NMT is not enabled
* @library /testlibrary
- * @ignore
* @run main JcmdWithNMTDisabled 1
*/
--- a/hotspot/test/runtime/NMT/MallocRoundingReportTest.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/MallocRoundingReportTest.java Wed Aug 20 21:37:50 2014 +0000
@@ -27,7 +27,6 @@
* @key nmt jcmd
* @library /testlibrary /testlibrary/whitebox
* @build MallocRoundingReportTest
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail MallocRoundingReportTest
*
--- a/hotspot/test/runtime/NMT/MallocTestType.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/MallocTestType.java Wed Aug 20 21:37:50 2014 +0000
@@ -27,7 +27,6 @@
* @key nmt jcmd
* @library /testlibrary /testlibrary/whitebox
* @build MallocTestType
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail MallocTestType
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/NMT/NMTWithCDS.java Wed Aug 20 21:37:50 2014 +0000
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2014, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8055061
+ * @key nmt
+ * @library /testlibrary
+ * @run main NMTWithCDS
+ */
+import com.oracle.java.testlibrary.*;
+
+public class NMTWithCDS {
+
+ public static void main(String[] args) throws Exception {
+ ProcessBuilder pb;
+ pb = ProcessTools.createJavaProcessBuilder("-XX:SharedArchiveFile=./sample.jsa", "-Xshare:dump");
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ try {
+ output.shouldContain("Loading classes to share");
+ output.shouldHaveExitValue(0);
+
+ pb = ProcessTools.createJavaProcessBuilder(
+ "-XX:NativeMemoryTracking=detail", "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:on", "-version");
+ output = new OutputAnalyzer(pb.start());
+ output.shouldContain("sharing");
+ output.shouldHaveExitValue(0);
+
+ } catch (RuntimeException e) {
+ // Report 'passed' if CDS was turned off.
+ output.shouldContain("Unable to use shared archive");
+ output.shouldHaveExitValue(1);
+ }
+ }
+}
--- a/hotspot/test/runtime/NMT/PrintNMTStatistics.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/PrintNMTStatistics.java Wed Aug 20 21:37:50 2014 +0000
@@ -28,7 +28,6 @@
* @summary Make sure PrintNMTStatistics works on normal JVM exit
* @library /testlibrary /testlibrary/whitebox
* @build PrintNMTStatistics
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main PrintNMTStatistics
--- a/hotspot/test/runtime/NMT/PrintNMTStatisticsWithNMTDisabled.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/PrintNMTStatisticsWithNMTDisabled.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt
* @summary Trying to enable PrintNMTStatistics should result in a warning
* @library /testlibrary
- * @ignore
*/
import com.oracle.java.testlibrary.*;
--- a/hotspot/test/runtime/NMT/ReleaseCommittedMemory.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/ReleaseCommittedMemory.java Wed Aug 20 21:37:50 2014 +0000
@@ -28,7 +28,6 @@
* @key nmt regression
* @library /testlibrary /testlibrary/whitebox
* @build ReleaseCommittedMemory
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail ReleaseCommittedMemory
--- a/hotspot/test/runtime/NMT/ReleaseNoCommit.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/ReleaseNoCommit.java Wed Aug 20 21:37:50 2014 +0000
@@ -27,7 +27,6 @@
* @key nmt regression
* @library /testlibrary /testlibrary/whitebox
* @build ReleaseNoCommit
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=summary ReleaseNoCommit
*/
--- a/hotspot/test/runtime/NMT/ShutdownTwice.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/ShutdownTwice.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @summary Run shutdown twice
* @library /testlibrary
- * @ignore
* @run main/othervm -XX:NativeMemoryTracking=detail ShutdownTwice
*/
--- a/hotspot/test/runtime/NMT/SummaryAfterShutdown.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/SummaryAfterShutdown.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @summary Verify that jcmd correctly reports that NMT is not enabled after a shutdown
* @library /testlibrary
- * @ignore
* @run main/othervm -XX:NativeMemoryTracking=detail SummaryAfterShutdown
*/
--- a/hotspot/test/runtime/NMT/SummarySanityCheck.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/SummarySanityCheck.java Wed Aug 20 21:37:50 2014 +0000
@@ -27,7 +27,6 @@
* @summary Sanity check the output of NMT
* @library /testlibrary /testlibrary/whitebox
* @build SummarySanityCheck
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=summary -XX:+WhiteBoxAPI SummarySanityCheck
--- a/hotspot/test/runtime/NMT/ThreadedMallocTestType.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/ThreadedMallocTestType.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @library /testlibrary /testlibrary/whitebox
* @build ThreadedMallocTestType
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail ThreadedMallocTestType
--- a/hotspot/test/runtime/NMT/ThreadedVirtualAllocTestType.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/ThreadedVirtualAllocTestType.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @key nmt jcmd
* @library /testlibrary /testlibrary/whitebox
* @build ThreadedVirtualAllocTestType
- * @ignore
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail ThreadedVirtualAllocTestType
--- a/hotspot/test/runtime/NMT/VirtualAllocTestType.java Wed Aug 20 15:58:45 2014 -0400
+++ b/hotspot/test/runtime/NMT/VirtualAllocTestType.java Wed Aug 20 21:37:50 2014 +0000
@@ -26,7 +26,6 @@
* @summary Test Reserve/Commit/Uncommit/Release of virtual memory and that we track it correctly
* @key nmt jcmd
* @library /testlibrary /testlibrary/whitebox
- * @ignore
* @build VirtualAllocTestType
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission