Esempio n. 1
0
/*
 * Class:     org_apache_harmony_lang_management_MemoryMXBeanImpl
 * Method:    getHeapMemoryUsageImpl
 * Signature: ()Ljava/lang/management/MemoryUsage;
 */
JNIEXPORT jobject JNICALL Java_org_apache_harmony_lang_management_MemoryMXBeanImpl_getHeapMemoryUsageImpl
(JNIEnv * jenv_ext, jobject)
{
    TRACE2("management","MemoryMXBeanImpl_getHeapMemoryUsageImpl invocation");

    JNIEnv_Internal *jenv = (JNIEnv_Internal *)jenv_ext;

    JavaVM * vm = NULL;
    jenv_ext->GetJavaVM(&vm);

    jlong init = ((JavaVM_Internal*)vm)->vm_env->init_gc_used_memory;
    jlong used = gc_total_memory();
    jlong committed = gc_total_memory();
    jlong max = gc_max_memory();

    jclass memoryUsageClazz =jenv->FindClass("java/lang/management/MemoryUsage");
    if (jenv->ExceptionCheck()) {return NULL;};
    jmethodID memoryUsageClazzConstructor = jenv->GetMethodID(memoryUsageClazz, "<init>", "(JJJJ)V");
    if (jenv->ExceptionCheck()) {return NULL;};

    jobject memoryUsage = jenv->NewObject(memoryUsageClazz, memoryUsageClazzConstructor, init, used,
        committed, max);

    return memoryUsage;
};
/*
 * Class:     java_lang_VMMemoryManager
 * Method:    getMaxMemory
 * Signature: ()J
 */
JNIEXPORT jlong JNICALL Java_java_lang_VMMemoryManager_getMaxMemory
  (JNIEnv *, jclass)
{
    return gc_max_memory();
}