mirror of
https://github.com/openjdk/jdk.git
synced 2026-07-13 12:38:07 +00:00
7018257: jmm_DumpThreads allocates into permgen
Don't allocate in permgen Reviewed-by: ysr, sla
This commit is contained in:
parent
2c35cde750
commit
311bd2a9a9
@ -92,12 +92,21 @@ objArrayOop oopFactory::new_objArray(klassOop klass, int length, TRAPS) {
|
||||
}
|
||||
}
|
||||
|
||||
objArrayOop oopFactory::new_system_objArray(int length, TRAPS) {
|
||||
objArrayOop oopFactory::new_system_objArray(int length, bool in_perm_gen, TRAPS) {
|
||||
int size = objArrayOopDesc::object_size(length);
|
||||
KlassHandle klass (THREAD, Universe::systemObjArrayKlassObj());
|
||||
objArrayOop o = (objArrayOop)
|
||||
Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL);
|
||||
oop o;
|
||||
if (in_perm_gen) {
|
||||
o = Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL);
|
||||
} else {
|
||||
o = Universe::heap()->array_allocate(klass, size, length, CHECK_NULL);
|
||||
}
|
||||
// initialization not needed, allocated cleared
|
||||
return (objArrayOop) o;
|
||||
}
|
||||
|
||||
objArrayOop oopFactory::new_system_objArray(int length, TRAPS) {
|
||||
objArrayOop o = oopFactory::new_system_objArray(length, true, CHECK_NULL);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
||||
@ -102,6 +102,7 @@ public:
|
||||
|
||||
// System object arrays
|
||||
static objArrayOop new_system_objArray(int length, TRAPS);
|
||||
static objArrayOop new_system_objArray(int length, bool in_perm_gen, TRAPS);
|
||||
|
||||
// Regular object arrays
|
||||
static objArrayOop new_objArray(klassOop klass, int length, TRAPS);
|
||||
|
||||
@ -1310,7 +1310,7 @@ JVM_ENTRY(jobjectArray, jmm_DumpThreads(JNIEnv *env, jlongArray thread_ids, jboo
|
||||
if (locked_monitors) {
|
||||
// Constructs Object[] and int[] to contain the object monitor and the stack depth
|
||||
// where the thread locked it
|
||||
objArrayOop array = oopFactory::new_system_objArray(num_locked_monitors, CHECK_NULL);
|
||||
objArrayOop array = oopFactory::new_system_objArray(num_locked_monitors, false, CHECK_NULL);
|
||||
objArrayHandle mh(THREAD, array);
|
||||
monitors_array = mh;
|
||||
|
||||
@ -1352,7 +1352,7 @@ JVM_ENTRY(jobjectArray, jmm_DumpThreads(JNIEnv *env, jlongArray thread_ids, jboo
|
||||
GrowableArray<instanceOop>* locks = (tcl != NULL ? tcl->owned_locks() : NULL);
|
||||
int num_locked_synchronizers = (locks != NULL ? locks->length() : 0);
|
||||
|
||||
objArrayOop array = oopFactory::new_system_objArray(num_locked_synchronizers, CHECK_NULL);
|
||||
objArrayOop array = oopFactory::new_system_objArray(num_locked_synchronizers, false, CHECK_NULL);
|
||||
objArrayHandle sh(THREAD, array);
|
||||
synchronizers_array = sh;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user