< prev index next >

src/hotspot/share/services/management.cpp

Print this page

        

*** 2066,2075 **** --- 2066,2100 ---- return (jlong)(((double)ticks / (double)os::elapsed_frequency()) * (double)1000.0); } #endif // INCLUDE_MANAGEMENT + // Gets the amount of memory allocated on the Java heap for a single thread. + // Returns -1 if the thread does not exist or has terminated. + JVM_ENTRY(jlong, jmm_GetOneThreadAllocatedMemory(JNIEnv *env, jlong thread_id)) + if (thread_id < 0) { + THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), + "Invalid thread ID", -1); + } + + if (thread_id == 0) { + // current thread + if (THREAD->is_Java_thread()) { + return ((JavaThread*)THREAD)->cooked_allocated_bytes(); + } + return -1; + } + + ThreadsListHandle tlh; + JavaThread* java_thread = tlh.list()->find_JavaThread_from_java_tid(thread_id); + + if (java_thread != NULL) { + return java_thread->cooked_allocated_bytes(); + } + return -1; + JVM_END + // Gets an array containing the amount of memory allocated on the Java // heap for a set of threads (in bytes). Each element of the array is // the amount of memory allocated for the thread ID specified in the // corresponding entry in the given array of thread IDs; or -1 if the // thread does not exist or has terminated.
*** 2190,2199 **** --- 2215,2225 ---- jmm_GetThreadInfo, jmm_GetMemoryPools, jmm_GetMemoryManagers, jmm_GetMemoryPoolUsage, jmm_GetPeakMemoryPoolUsage, + jmm_GetOneThreadAllocatedMemory, jmm_GetThreadAllocatedMemory, jmm_GetMemoryUsage, jmm_GetLongAttribute, jmm_GetBoolAttribute, jmm_SetBoolAttribute,
< prev index next >