github-actions[bot] commented on code in PR #43497:
URL: https://github.com/apache/doris/pull/43497#discussion_r1833786811


##########
be/src/util/jvm_metrics.cpp:
##########
@@ -189,257 +182,193 @@
     }
 }
 
-Status JvmStats::init(JNIEnv* env) {
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ManagementFactory",
-                                               &_managementFactoryClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
-                                                      
"()Ljava/lang/management/MemoryMXBean;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryUsage",
-                                               &_memoryUsageClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageUsedMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getUsed", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageCommittedMethod, env,
-                                    GetMethodID(_memoryUsageClass, 
"getCommitted", "()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageMaxMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getMax", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryMXBean",
-                                               &_memoryMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getNonHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPoolMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, "getMemoryPoolMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/util/List", 
&_listClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListSizeMethod, env,
-                                    GetMethodID(_listClass, "size", "()I"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListUseIndexMethod, env,
-                                    GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryPoolMXBean",
-                                               &_memoryPoolMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPoolMXBeanUsageMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPollMXBeanPeakMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPollMXBeanNameMethod, env,
-            GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getThreadMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
-                                                      
"()Ljava/lang/management/ThreadMXBean;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGarbageCollectorMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, 
"getGarbageCollectorMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/GarbageCollectorMXBean",
-                                               &_garbageCollectorMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCNameMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionCountMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionCount", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionTimeMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionTime", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ThreadMXBean",
-                                               &_threadMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getAllThreadIdsMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getThreadInfoMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
-                                                
"([JI)[Ljava/lang/management/ThreadInfo;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getPeakThreadCountMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I"));
-
-    RETURN_IF_ERROR(
-            JniUtil::GetGlobalClassRef(env, "java/lang/management/ThreadInfo", 
&_threadInfoClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            ,
-
-            _getThreadStateMethod, env,
-            GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/lang/Thread$State", 
&_threadStateClass));
+void JvmStats::init(JNIEnv* ENV) {
+    env = ENV;
+    _managementFactoryClass = 
env->FindClass("java/lang/management/ManagementFactory");
+    if (_managementFactoryClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/ManagementFactory Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, newThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;"));
+    _getMemoryMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
+                                                    
"()Ljava/lang/management/MemoryMXBean;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, runnableThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;"));
+    _memoryUsageClass = env->FindClass("java/lang/management/MemoryUsage");
+    if (_memoryUsageClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryUsage Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryUsageUsedMethod = env->GetMethodID(_memoryUsageClass, "getUsed", 
"()J");
+    _getMemoryUsageCommittedMethod = env->GetMethodID(_memoryUsageClass, 
"getCommitted", "()J");
+    _getMemoryUsageMaxMethod = env->GetMethodID(_memoryUsageClass, "getMax", 
"()J");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, blockedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, waitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;"));
+    _memoryMXBeanClass = env->FindClass("java/lang/management/MemoryMXBean");
+    if (_memoryMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
+                                                 
"()Ljava/lang/management/MemoryUsage;");
+    _getNonHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
+                                                    
"()Ljava/lang/management/MemoryUsage;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, timedWaitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, terminatedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;"));
+    _getMemoryPoolMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getMemoryPoolMXBeans", 
"()Ljava/util/List;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, newThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
newThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, newThreadStateObj, 
&_newThreadStateObj));
+    _listClass = env->FindClass("java/util/List");
+    if (_listClass == nullptr) {
+        LOG(WARNING) << "Class java/util/List Not Find.JVM monitoring fails.";
+        return;
+    }
+    _getListSizeMethod = env->GetMethodID(_listClass, "size", "()I");
+    _getListUseIndexMethod = env->GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, runnableThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, runnableThreadStateObj, 
&_runnableThreadStateObj));
+    _memoryPoolMXBeanClass = 
env->FindClass("java/lang/management/MemoryPoolMXBean");
+    if (_memoryPoolMXBeanClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/MemoryPoolMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryPoolMXBeanUsageMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
+                                                       
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanPeakMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
+                                                      
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanNameMethod =
+            env->GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;");
+
+    _getThreadMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
+                                                    
"()Ljava/lang/management/ThreadMXBean;");
+
+    _getGarbageCollectorMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getGarbageCollectorMXBeans", 
"()Ljava/util/List;");
+
+    _garbageCollectorMXBeanClass = 
env->FindClass("java/lang/management/GarbageCollectorMXBean");
+    if (_garbageCollectorMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/GarbageCollectorMXBean Not 
Find.JVM monitoring "
+                        "fails.";
+        return;
+    }
+    _getGCNameMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;");
+    _getGCCollectionCountMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionCount", "()J");
+    _getGCCollectionTimeMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionTime", "()J");
+
+    _threadMXBeanClass = env->FindClass("java/lang/management/ThreadMXBean");
+    if (_threadMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getAllThreadIdsMethod = env->GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J");
+    _getThreadInfoMethod = env->GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
+                                            
"([JI)[Ljava/lang/management/ThreadInfo;");
+    _getPeakThreadCountMethod = env->GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I");
+
+    _threadInfoClass = env->FindClass("java/lang/management/ThreadInfo");
+    if (_threadInfoClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadInfo Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, blockedThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, blockedThreadStateObj, 
&_blockedThreadStateObj));
+    _getThreadStateMethod =
+            env->GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, waitingThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, waitingThreadStateObj, 
&_waitingThreadStateObj));
+    _threadStateClass = env->FindClass("java/lang/Thread$State");
+    if (_threadStateClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/Thread$State Not Find.JVM monitoring 
fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, timedWaitingThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, timedWaitingThreadStateObj,
-                                              &_timedWaitingThreadStateObj));
+    jfieldID newThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;");
+    jfieldID runnableThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;");
+    jfieldID blockedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;");
+    jfieldID waitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID timedWaitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID terminatedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;");
+
+    _newThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
newThreadFieldID);
+    _runnableThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID);
+    _blockedThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID);
+    _waitingThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID);
+    _timedWaitingThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID);
+    _terminatedThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
terminatedThreadFieldID);
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, terminatedThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, terminatedThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, terminatedThreadStateObj, 
&_terminatedThreadStateObj));
+    LOG(INFO) << "Start JVM monitoring.";
 
     _init_complete = true;
-
-    LOG(INFO) << "Start JVM monitoring.";
-    return Status::OK();
+    return;
 }

Review Comment:
   warning: redundant return statement at the end of a function with a void 
return type [readability-redundant-control-flow]
   
   ```suggestion
   }
   ```
   



##########
be/src/util/jvm_metrics.cpp:
##########
@@ -189,257 +182,193 @@
     }
 }
 
-Status JvmStats::init(JNIEnv* env) {
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ManagementFactory",
-                                               &_managementFactoryClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
-                                                      
"()Ljava/lang/management/MemoryMXBean;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryUsage",
-                                               &_memoryUsageClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageUsedMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getUsed", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageCommittedMethod, env,
-                                    GetMethodID(_memoryUsageClass, 
"getCommitted", "()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageMaxMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getMax", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryMXBean",
-                                               &_memoryMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getNonHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPoolMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, "getMemoryPoolMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/util/List", 
&_listClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListSizeMethod, env,
-                                    GetMethodID(_listClass, "size", "()I"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListUseIndexMethod, env,
-                                    GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryPoolMXBean",
-                                               &_memoryPoolMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPoolMXBeanUsageMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPollMXBeanPeakMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPollMXBeanNameMethod, env,
-            GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getThreadMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
-                                                      
"()Ljava/lang/management/ThreadMXBean;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGarbageCollectorMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, 
"getGarbageCollectorMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/GarbageCollectorMXBean",
-                                               &_garbageCollectorMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCNameMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionCountMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionCount", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionTimeMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionTime", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ThreadMXBean",
-                                               &_threadMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getAllThreadIdsMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getThreadInfoMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
-                                                
"([JI)[Ljava/lang/management/ThreadInfo;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getPeakThreadCountMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I"));
-
-    RETURN_IF_ERROR(
-            JniUtil::GetGlobalClassRef(env, "java/lang/management/ThreadInfo", 
&_threadInfoClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            ,
-
-            _getThreadStateMethod, env,
-            GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/lang/Thread$State", 
&_threadStateClass));
+void JvmStats::init(JNIEnv* ENV) {
+    env = ENV;
+    _managementFactoryClass = 
env->FindClass("java/lang/management/ManagementFactory");
+    if (_managementFactoryClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/ManagementFactory Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, newThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;"));
+    _getMemoryMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
+                                                    
"()Ljava/lang/management/MemoryMXBean;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, runnableThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;"));
+    _memoryUsageClass = env->FindClass("java/lang/management/MemoryUsage");
+    if (_memoryUsageClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryUsage Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryUsageUsedMethod = env->GetMethodID(_memoryUsageClass, "getUsed", 
"()J");
+    _getMemoryUsageCommittedMethod = env->GetMethodID(_memoryUsageClass, 
"getCommitted", "()J");
+    _getMemoryUsageMaxMethod = env->GetMethodID(_memoryUsageClass, "getMax", 
"()J");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, blockedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, waitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;"));
+    _memoryMXBeanClass = env->FindClass("java/lang/management/MemoryMXBean");
+    if (_memoryMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
+                                                 
"()Ljava/lang/management/MemoryUsage;");
+    _getNonHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
+                                                    
"()Ljava/lang/management/MemoryUsage;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, timedWaitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, terminatedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;"));
+    _getMemoryPoolMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getMemoryPoolMXBeans", 
"()Ljava/util/List;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, newThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
newThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, newThreadStateObj, 
&_newThreadStateObj));
+    _listClass = env->FindClass("java/util/List");
+    if (_listClass == nullptr) {
+        LOG(WARNING) << "Class java/util/List Not Find.JVM monitoring fails.";
+        return;
+    }
+    _getListSizeMethod = env->GetMethodID(_listClass, "size", "()I");
+    _getListUseIndexMethod = env->GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, runnableThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, runnableThreadStateObj, 
&_runnableThreadStateObj));
+    _memoryPoolMXBeanClass = 
env->FindClass("java/lang/management/MemoryPoolMXBean");
+    if (_memoryPoolMXBeanClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/MemoryPoolMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryPoolMXBeanUsageMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
+                                                       
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanPeakMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
+                                                      
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanNameMethod =
+            env->GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;");
+
+    _getThreadMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
+                                                    
"()Ljava/lang/management/ThreadMXBean;");
+
+    _getGarbageCollectorMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getGarbageCollectorMXBeans", 
"()Ljava/util/List;");
+
+    _garbageCollectorMXBeanClass = 
env->FindClass("java/lang/management/GarbageCollectorMXBean");
+    if (_garbageCollectorMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/GarbageCollectorMXBean Not 
Find.JVM monitoring "
+                        "fails.";
+        return;
+    }
+    _getGCNameMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;");
+    _getGCCollectionCountMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionCount", "()J");
+    _getGCCollectionTimeMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionTime", "()J");
+
+    _threadMXBeanClass = env->FindClass("java/lang/management/ThreadMXBean");
+    if (_threadMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getAllThreadIdsMethod = env->GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J");
+    _getThreadInfoMethod = env->GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
+                                            
"([JI)[Ljava/lang/management/ThreadInfo;");
+    _getPeakThreadCountMethod = env->GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I");
+
+    _threadInfoClass = env->FindClass("java/lang/management/ThreadInfo");
+    if (_threadInfoClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadInfo Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, blockedThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, blockedThreadStateObj, 
&_blockedThreadStateObj));
+    _getThreadStateMethod =
+            env->GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, waitingThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, waitingThreadStateObj, 
&_waitingThreadStateObj));
+    _threadStateClass = env->FindClass("java/lang/Thread$State");
+    if (_threadStateClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/Thread$State Not Find.JVM monitoring 
fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, timedWaitingThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, timedWaitingThreadStateObj,
-                                              &_timedWaitingThreadStateObj));
+    jfieldID newThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;");
+    jfieldID runnableThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;");
+    jfieldID blockedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;");
+    jfieldID waitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID timedWaitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID terminatedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;");
+
+    _newThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
newThreadFieldID);
+    _runnableThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID);
+    _blockedThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID);
+    _waitingThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID);
+    _timedWaitingThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID);
+    _terminatedThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
terminatedThreadFieldID);
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, terminatedThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, terminatedThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, terminatedThreadStateObj, 
&_terminatedThreadStateObj));
+    LOG(INFO) << "Start JVM monitoring.";
 
     _init_complete = true;
-
-    LOG(INFO) << "Start JVM monitoring.";
-    return Status::OK();
+    return;
 }
 
-Status JvmStats::refresh(JvmMetrics* jvm_metrics) const {
+void JvmStats::refresh(JvmMetrics* jvm_metrics) {

Review Comment:
   warning: method 'refresh' can be made const 
[readability-make-member-function-const]
   
   be/src/util/jvm_metrics.h:102:
   ```diff
   -     void refresh(JvmMetrics* jvm_metrics);
   +     void refresh(JvmMetrics* jvm_metrics) const;
   ```
   
   ```suggestion
   void JvmStats::refresh(JvmMetrics* jvm_metrics) const {
   ```
   



##########
be/src/util/jvm_metrics.cpp:
##########
@@ -189,257 +182,193 @@ void JvmMetrics::update() {
     }
 }
 
-Status JvmStats::init(JNIEnv* env) {
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ManagementFactory",
-                                               &_managementFactoryClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
-                                                      
"()Ljava/lang/management/MemoryMXBean;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryUsage",
-                                               &_memoryUsageClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageUsedMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getUsed", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageCommittedMethod, env,
-                                    GetMethodID(_memoryUsageClass, 
"getCommitted", "()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageMaxMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getMax", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryMXBean",
-                                               &_memoryMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getNonHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPoolMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, "getMemoryPoolMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/util/List", 
&_listClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListSizeMethod, env,
-                                    GetMethodID(_listClass, "size", "()I"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListUseIndexMethod, env,
-                                    GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryPoolMXBean",
-                                               &_memoryPoolMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPoolMXBeanUsageMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPollMXBeanPeakMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPollMXBeanNameMethod, env,
-            GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getThreadMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
-                                                      
"()Ljava/lang/management/ThreadMXBean;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGarbageCollectorMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, 
"getGarbageCollectorMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/GarbageCollectorMXBean",
-                                               &_garbageCollectorMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCNameMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionCountMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionCount", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionTimeMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionTime", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ThreadMXBean",
-                                               &_threadMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getAllThreadIdsMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getThreadInfoMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
-                                                
"([JI)[Ljava/lang/management/ThreadInfo;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getPeakThreadCountMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I"));
-
-    RETURN_IF_ERROR(
-            JniUtil::GetGlobalClassRef(env, "java/lang/management/ThreadInfo", 
&_threadInfoClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            ,
-
-            _getThreadStateMethod, env,
-            GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/lang/Thread$State", 
&_threadStateClass));
+void JvmStats::init(JNIEnv* ENV) {

Review Comment:
   warning: function 'init' exceeds recommended size/complexity thresholds 
[readability-function-size]
   ```cpp
   void JvmStats::init(JNIEnv* ENV) {
                  ^
   ```
   <details>
   <summary>Additional context</summary>
   
   **be/src/util/jvm_metrics.cpp:184:** 125 lines including whitespace and 
comments (threshold 80)
   ```cpp
   void JvmStats::init(JNIEnv* ENV) {
                  ^
   ```
   
   </details>
   



##########
be/src/util/jvm_metrics.cpp:
##########
@@ -189,257 +182,193 @@
     }
 }
 
-Status JvmStats::init(JNIEnv* env) {
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ManagementFactory",
-                                               &_managementFactoryClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
-                                                      
"()Ljava/lang/management/MemoryMXBean;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryUsage",
-                                               &_memoryUsageClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageUsedMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getUsed", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageCommittedMethod, env,
-                                    GetMethodID(_memoryUsageClass, 
"getCommitted", "()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageMaxMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getMax", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryMXBean",
-                                               &_memoryMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getNonHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPoolMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, "getMemoryPoolMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/util/List", 
&_listClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListSizeMethod, env,
-                                    GetMethodID(_listClass, "size", "()I"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListUseIndexMethod, env,
-                                    GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryPoolMXBean",
-                                               &_memoryPoolMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPoolMXBeanUsageMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPollMXBeanPeakMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPollMXBeanNameMethod, env,
-            GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getThreadMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
-                                                      
"()Ljava/lang/management/ThreadMXBean;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGarbageCollectorMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, 
"getGarbageCollectorMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/GarbageCollectorMXBean",
-                                               &_garbageCollectorMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCNameMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionCountMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionCount", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionTimeMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionTime", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ThreadMXBean",
-                                               &_threadMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getAllThreadIdsMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getThreadInfoMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
-                                                
"([JI)[Ljava/lang/management/ThreadInfo;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getPeakThreadCountMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I"));
-
-    RETURN_IF_ERROR(
-            JniUtil::GetGlobalClassRef(env, "java/lang/management/ThreadInfo", 
&_threadInfoClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            ,
-
-            _getThreadStateMethod, env,
-            GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/lang/Thread$State", 
&_threadStateClass));
+void JvmStats::init(JNIEnv* ENV) {
+    env = ENV;
+    _managementFactoryClass = 
env->FindClass("java/lang/management/ManagementFactory");
+    if (_managementFactoryClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/ManagementFactory Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, newThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;"));
+    _getMemoryMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
+                                                    
"()Ljava/lang/management/MemoryMXBean;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, runnableThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;"));
+    _memoryUsageClass = env->FindClass("java/lang/management/MemoryUsage");
+    if (_memoryUsageClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryUsage Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryUsageUsedMethod = env->GetMethodID(_memoryUsageClass, "getUsed", 
"()J");
+    _getMemoryUsageCommittedMethod = env->GetMethodID(_memoryUsageClass, 
"getCommitted", "()J");
+    _getMemoryUsageMaxMethod = env->GetMethodID(_memoryUsageClass, "getMax", 
"()J");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, blockedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, waitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;"));
+    _memoryMXBeanClass = env->FindClass("java/lang/management/MemoryMXBean");
+    if (_memoryMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
+                                                 
"()Ljava/lang/management/MemoryUsage;");
+    _getNonHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
+                                                    
"()Ljava/lang/management/MemoryUsage;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, timedWaitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, terminatedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;"));
+    _getMemoryPoolMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getMemoryPoolMXBeans", 
"()Ljava/util/List;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, newThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
newThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, newThreadStateObj, 
&_newThreadStateObj));
+    _listClass = env->FindClass("java/util/List");
+    if (_listClass == nullptr) {
+        LOG(WARNING) << "Class java/util/List Not Find.JVM monitoring fails.";
+        return;
+    }
+    _getListSizeMethod = env->GetMethodID(_listClass, "size", "()I");
+    _getListUseIndexMethod = env->GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, runnableThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, runnableThreadStateObj, 
&_runnableThreadStateObj));
+    _memoryPoolMXBeanClass = 
env->FindClass("java/lang/management/MemoryPoolMXBean");
+    if (_memoryPoolMXBeanClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/MemoryPoolMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryPoolMXBeanUsageMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
+                                                       
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanPeakMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
+                                                      
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanNameMethod =
+            env->GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;");
+
+    _getThreadMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
+                                                    
"()Ljava/lang/management/ThreadMXBean;");
+
+    _getGarbageCollectorMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getGarbageCollectorMXBeans", 
"()Ljava/util/List;");
+
+    _garbageCollectorMXBeanClass = 
env->FindClass("java/lang/management/GarbageCollectorMXBean");
+    if (_garbageCollectorMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/GarbageCollectorMXBean Not 
Find.JVM monitoring "
+                        "fails.";
+        return;
+    }
+    _getGCNameMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;");
+    _getGCCollectionCountMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionCount", "()J");
+    _getGCCollectionTimeMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionTime", "()J");
+
+    _threadMXBeanClass = env->FindClass("java/lang/management/ThreadMXBean");
+    if (_threadMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getAllThreadIdsMethod = env->GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J");
+    _getThreadInfoMethod = env->GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
+                                            
"([JI)[Ljava/lang/management/ThreadInfo;");
+    _getPeakThreadCountMethod = env->GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I");
+
+    _threadInfoClass = env->FindClass("java/lang/management/ThreadInfo");
+    if (_threadInfoClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadInfo Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, blockedThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, blockedThreadStateObj, 
&_blockedThreadStateObj));
+    _getThreadStateMethod =
+            env->GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, waitingThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, waitingThreadStateObj, 
&_waitingThreadStateObj));
+    _threadStateClass = env->FindClass("java/lang/Thread$State");
+    if (_threadStateClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/Thread$State Not Find.JVM monitoring 
fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, timedWaitingThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, timedWaitingThreadStateObj,
-                                              &_timedWaitingThreadStateObj));
+    jfieldID newThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;");
+    jfieldID runnableThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;");
+    jfieldID blockedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;");
+    jfieldID waitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID timedWaitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID terminatedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;");
+
+    _newThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
newThreadFieldID);
+    _runnableThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID);
+    _blockedThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID);
+    _waitingThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID);
+    _timedWaitingThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID);
+    _terminatedThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
terminatedThreadFieldID);
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, terminatedThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, terminatedThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, terminatedThreadStateObj, 
&_terminatedThreadStateObj));
+    LOG(INFO) << "Start JVM monitoring.";
 
     _init_complete = true;
-
-    LOG(INFO) << "Start JVM monitoring.";
-    return Status::OK();
+    return;
 }
 
-Status JvmStats::refresh(JvmMetrics* jvm_metrics) const {
+void JvmStats::refresh(JvmMetrics* jvm_metrics) {

Review Comment:
   warning: function 'refresh' exceeds recommended size/complexity thresholds 
[readability-function-size]
   ```cpp
   void JvmStats::refresh(JvmMetrics* jvm_metrics) {
                  ^
   ```
   <details>
   <summary>Additional context</summary>
   
   **be/src/util/jvm_metrics.cpp:311:** 164 lines including whitespace and 
comments (threshold 80)
   ```cpp
   void JvmStats::refresh(JvmMetrics* jvm_metrics) {
                  ^
   ```
   
   </details>
   



##########
be/src/util/jvm_metrics.cpp:
##########
@@ -189,257 +182,193 @@
     }
 }
 
-Status JvmStats::init(JNIEnv* env) {
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ManagementFactory",
-                                               &_managementFactoryClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
-                                                      
"()Ljava/lang/management/MemoryMXBean;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryUsage",
-                                               &_memoryUsageClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageUsedMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getUsed", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageCommittedMethod, env,
-                                    GetMethodID(_memoryUsageClass, 
"getCommitted", "()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryUsageMaxMethod, env,
-                                    GetMethodID(_memoryUsageClass, "getMax", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryMXBean",
-                                               &_memoryMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getNonHeapMemoryUsageMethod, env,
-                                    GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPoolMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, "getMemoryPoolMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/util/List", 
&_listClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListSizeMethod, env,
-                                    GetMethodID(_listClass, "size", "()I"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getListUseIndexMethod, env,
-                                    GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/MemoryPoolMXBean",
-                                               &_memoryPoolMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPoolMXBeanUsageMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getMemoryPollMXBeanPeakMethod, env,
-                                    GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
-                                                
"()Ljava/lang/management/MemoryUsage;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getMemoryPollMXBeanNameMethod, env,
-            GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(, _getThreadMXBeanMethod, env,
-                                    GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
-                                                      
"()Ljava/lang/management/ThreadMXBean;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGarbageCollectorMXBeansMethod, env,
-            GetStaticMethodID(_managementFactoryClass, 
"getGarbageCollectorMXBeans",
-                              "()Ljava/util/List;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/GarbageCollectorMXBean",
-                                               &_garbageCollectorMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCNameMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionCountMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionCount", 
"()J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            , _getGCCollectionTimeMethod, env,
-            GetMethodID(_garbageCollectorMXBeanClass, "getCollectionTime", 
"()J"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, 
"java/lang/management/ThreadMXBean",
-                                               &_threadMXBeanClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getAllThreadIdsMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getThreadInfoMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
-                                                
"([JI)[Ljava/lang/management/ThreadInfo;"));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(,
-
-                                    _getPeakThreadCountMethod, env,
-                                    GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I"));
-
-    RETURN_IF_ERROR(
-            JniUtil::GetGlobalClassRef(env, "java/lang/management/ThreadInfo", 
&_threadInfoClass));
-
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            ,
-
-            _getThreadStateMethod, env,
-            GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;"));
-
-    RETURN_IF_ERROR(JniUtil::GetGlobalClassRef(env, "java/lang/Thread$State", 
&_threadStateClass));
+void JvmStats::init(JNIEnv* ENV) {
+    env = ENV;
+    _managementFactoryClass = 
env->FindClass("java/lang/management/ManagementFactory");
+    if (_managementFactoryClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/ManagementFactory Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, newThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;"));
+    _getMemoryMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getMemoryMXBean",
+                                                    
"()Ljava/lang/management/MemoryMXBean;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, runnableThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;"));
+    _memoryUsageClass = env->FindClass("java/lang/management/MemoryUsage");
+    if (_memoryUsageClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryUsage Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryUsageUsedMethod = env->GetMethodID(_memoryUsageClass, "getUsed", 
"()J");
+    _getMemoryUsageCommittedMethod = env->GetMethodID(_memoryUsageClass, 
"getCommitted", "()J");
+    _getMemoryUsageMaxMethod = env->GetMethodID(_memoryUsageClass, "getMax", 
"()J");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, blockedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, waitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;"));
+    _memoryMXBeanClass = env->FindClass("java/lang/management/MemoryMXBean");
+    if (_memoryMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/MemoryMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getHeapMemoryUsage",
+                                                 
"()Ljava/lang/management/MemoryUsage;");
+    _getNonHeapMemoryUsageMethod = env->GetMethodID(_memoryMXBeanClass, 
"getNonHeapMemoryUsage",
+                                                    
"()Ljava/lang/management/MemoryUsage;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, timedWaitingThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;"));
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jfieldID, terminatedThreadFieldID, env,
-            GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;"));
+    _getMemoryPoolMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getMemoryPoolMXBeans", 
"()Ljava/util/List;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, newThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
newThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, newThreadStateObj, 
&_newThreadStateObj));
+    _listClass = env->FindClass("java/util/List");
+    if (_listClass == nullptr) {
+        LOG(WARNING) << "Class java/util/List Not Find.JVM monitoring fails.";
+        return;
+    }
+    _getListSizeMethod = env->GetMethodID(_listClass, "size", "()I");
+    _getListUseIndexMethod = env->GetMethodID(_listClass, "get", 
"(I)Ljava/lang/Object;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, runnableThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, runnableThreadStateObj, 
&_runnableThreadStateObj));
+    _memoryPoolMXBeanClass = 
env->FindClass("java/lang/management/MemoryPoolMXBean");
+    if (_memoryPoolMXBeanClass == nullptr) {
+        LOG(WARNING)
+                << "Class java/lang/management/MemoryPoolMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getMemoryPoolMXBeanUsageMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getUsage",
+                                                       
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanPeakMethod = env->GetMethodID(_memoryPoolMXBeanClass, 
"getPeakUsage",
+                                                      
"()Ljava/lang/management/MemoryUsage;");
+    _getMemoryPollMXBeanNameMethod =
+            env->GetMethodID(_memoryPoolMXBeanClass, "getName", 
"()Ljava/lang/String;");
+
+    _getThreadMXBeanMethod = env->GetStaticMethodID(_managementFactoryClass, 
"getThreadMXBean",
+                                                    
"()Ljava/lang/management/ThreadMXBean;");
+
+    _getGarbageCollectorMXBeansMethod = env->GetStaticMethodID(
+            _managementFactoryClass, "getGarbageCollectorMXBeans", 
"()Ljava/util/List;");
+
+    _garbageCollectorMXBeanClass = 
env->FindClass("java/lang/management/GarbageCollectorMXBean");
+    if (_garbageCollectorMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/GarbageCollectorMXBean Not 
Find.JVM monitoring "
+                        "fails.";
+        return;
+    }
+    _getGCNameMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, "getName", 
"()Ljava/lang/String;");
+    _getGCCollectionCountMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionCount", "()J");
+    _getGCCollectionTimeMethod =
+            env->GetMethodID(_garbageCollectorMXBeanClass, 
"getCollectionTime", "()J");
+
+    _threadMXBeanClass = env->FindClass("java/lang/management/ThreadMXBean");
+    if (_threadMXBeanClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadMXBean Not Find.JVM 
monitoring fails.";
+        return;
+    }
+    _getAllThreadIdsMethod = env->GetMethodID(_threadMXBeanClass, 
"getAllThreadIds", "()[J");
+    _getThreadInfoMethod = env->GetMethodID(_threadMXBeanClass, 
"getThreadInfo",
+                                            
"([JI)[Ljava/lang/management/ThreadInfo;");
+    _getPeakThreadCountMethod = env->GetMethodID(_threadMXBeanClass, 
"getPeakThreadCount", "()I");
+
+    _threadInfoClass = env->FindClass("java/lang/management/ThreadInfo");
+    if (_threadInfoClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/management/ThreadInfo Not Find.JVM 
monitoring fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, blockedThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, blockedThreadStateObj, 
&_blockedThreadStateObj));
+    _getThreadStateMethod =
+            env->GetMethodID(_threadInfoClass, "getThreadState", 
"()Ljava/lang/Thread$State;");
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(jobject, waitingThreadStateObj, env,
-                                    GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, waitingThreadStateObj, 
&_waitingThreadStateObj));
+    _threadStateClass = env->FindClass("java/lang/Thread$State");
+    if (_threadStateClass == nullptr) {
+        LOG(WARNING) << "Class java/lang/Thread$State Not Find.JVM monitoring 
fails.";
+        return;
+    }
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, timedWaitingThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID));
-    RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, timedWaitingThreadStateObj,
-                                              &_timedWaitingThreadStateObj));
+    jfieldID newThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "NEW", 
"Ljava/lang/Thread$State;");
+    jfieldID runnableThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "RUNNABLE", 
"Ljava/lang/Thread$State;");
+    jfieldID blockedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "BLOCKED", 
"Ljava/lang/Thread$State;");
+    jfieldID waitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID timedWaitingThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TIMED_WAITING", 
"Ljava/lang/Thread$State;");
+    jfieldID terminatedThreadFieldID =
+            env->GetStaticFieldID(_threadStateClass, "TERMINATED", 
"Ljava/lang/Thread$State;");
+
+    _newThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
newThreadFieldID);
+    _runnableThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
runnableThreadFieldID);
+    _blockedThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
blockedThreadFieldID);
+    _waitingThreadStateObj = env->GetStaticObjectField(_threadStateClass, 
waitingThreadFieldID);
+    _timedWaitingThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
timedWaitingThreadFieldID);
+    _terminatedThreadStateObj =
+            env->GetStaticObjectField(_threadStateClass, 
terminatedThreadFieldID);
 
-    JNI_CALL_METHOD_CHECK_EXCEPTION(
-            jobject, terminatedThreadStateObj, env,
-            GetStaticObjectField(_threadStateClass, terminatedThreadFieldID));
-    RETURN_IF_ERROR(
-            JniUtil::LocalToGlobalRef(env, terminatedThreadStateObj, 
&_terminatedThreadStateObj));
+    LOG(INFO) << "Start JVM monitoring.";
 
     _init_complete = true;
-
-    LOG(INFO) << "Start JVM monitoring.";
-    return Status::OK();
+    return;
 }
 
-Status JvmStats::refresh(JvmMetrics* jvm_metrics) const {
+void JvmStats::refresh(JvmMetrics* jvm_metrics) {

Review Comment:
   warning: function 'refresh' has cognitive complexity of 66 (threshold 50) 
[readability-function-cognitive-complexity]
   ```cpp
   void JvmStats::refresh(JvmMetrics* jvm_metrics) {
                  ^
   ```
   <details>
   <summary>Additional context</summary>
   
   **be/src/util/jvm_metrics.cpp:312:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       if (!_init_complete) {
       ^
   ```
   **be/src/util/jvm_metrics.cpp:317:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       if (!st.ok()) {
       ^
   ```
   **be/src/util/jvm_metrics.cpp:332:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_heap_size_bytes_used->set_value(heapMemoryUsed < 0 ? 0 
: heapMemoryUsed);
                                                                           ^
   ```
   **be/src/util/jvm_metrics.cpp:334:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
               heapMemoryCommitted < 0 ? 0 : heapMemoryCommitted);
                                       ^
   ```
   **be/src/util/jvm_metrics.cpp:335:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_heap_size_bytes_max->set_value(heapMemoryMax < 0 ? 0 : 
heapMemoryMax);
                                                                         ^
   ```
   **be/src/util/jvm_metrics.cpp:345:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
               nonHeapMemoryCommitted < 0 ? 0 : nonHeapMemoryCommitted);
                                          ^
   ```
   **be/src/util/jvm_metrics.cpp:346:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_non_heap_size_bytes_used->set_value(nonHeapMemoryUsed < 
0 ? 0
                                                                                
  ^
   ```
   **be/src/util/jvm_metrics.cpp:354:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       for (int i = 0; i < size; ++i) {
       ^
   ```
   **be/src/util/jvm_metrics.cpp:371:** +2, including nesting penalty of 1, 
nesting level increased to 2
   ```cpp
           if (nameStr != nullptr) {
           ^
   ```
   **be/src/util/jvm_metrics.cpp:373:** +3, including nesting penalty of 2, 
nesting level increased to 3
   ```cpp
               if (it == _memoryPoolName.end()) {
               ^
   ```
   **be/src/util/jvm_metrics.cpp:376:** +3, including nesting penalty of 2, 
nesting level increased to 3
   ```cpp
               if (it->second == memoryPoolNameEnum::YOUNG) {
               ^
   ```
   **be/src/util/jvm_metrics.cpp:377:** +4, including nesting penalty of 3, 
nesting level increased to 4
   ```cpp
                   jvm_metrics->jvm_young_size_bytes_used->set_value(used < 0 ? 
0 : used);
                                                                              ^
   ```
   **be/src/util/jvm_metrics.cpp:378:** +4, including nesting penalty of 3, 
nesting level increased to 4
   ```cpp
                   
jvm_metrics->jvm_young_size_bytes_peak_used->set_value(peakUsed < 0 ? 0 : 
peakUsed);
                                                                                
       ^
   ```
   **be/src/util/jvm_metrics.cpp:379:** +4, including nesting penalty of 3, 
nesting level increased to 4
   ```cpp
                   jvm_metrics->jvm_young_size_bytes_max->set_value(max < 0 ? 0 
: max);
                                                                            ^
   ```
   **be/src/util/jvm_metrics.cpp:381:** +1, nesting level increased to 3
   ```cpp
               } else if (it->second == memoryPoolNameEnum::OLD) {
                      ^
   ```
   **be/src/util/jvm_metrics.cpp:382:** +4, including nesting penalty of 3, 
nesting level increased to 4
   ```cpp
                   jvm_metrics->jvm_old_size_bytes_used->set_value(used < 0 ? 0 
: used);
                                                                            ^
   ```
   **be/src/util/jvm_metrics.cpp:383:** +4, including nesting penalty of 3, 
nesting level increased to 4
   ```cpp
                   
jvm_metrics->jvm_old_size_bytes_peak_used->set_value(peakUsed < 0 ? 0 : 
peakUsed);
                                                                                
     ^
   ```
   **be/src/util/jvm_metrics.cpp:384:** +4, including nesting penalty of 3, 
nesting level increased to 4
   ```cpp
                   jvm_metrics->jvm_old_size_bytes_max->set_value(max < 0 ? 0 : 
max);
                                                                          ^
   ```
   **be/src/util/jvm_metrics.cpp:407:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_peak_count->set_value(peakThreadCount < 0 ? 0 : 
peakThreadCount);
                                                                         ^
   ```
   **be/src/util/jvm_metrics.cpp:408:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_count->set_value(threadCount < 0 ? 0 : 
threadCount);
                                                                ^
   ```
   **be/src/util/jvm_metrics.cpp:410:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       for (int i = 0; i < threadCount; i++) {
       ^
   ```
   **be/src/util/jvm_metrics.cpp:412:** +2, including nesting penalty of 1, 
nesting level increased to 2
   ```cpp
           if (threadInfo == nullptr) {
           ^
   ```
   **be/src/util/jvm_metrics.cpp:417:** +2, including nesting penalty of 1, 
nesting level increased to 2
   ```cpp
           if (env->IsSameObject(threadState, _newThreadStateObj)) {
           ^
   ```
   **be/src/util/jvm_metrics.cpp:419:** +1, nesting level increased to 2
   ```cpp
           } else if (env->IsSameObject(threadState, _runnableThreadStateObj)) {
                  ^
   ```
   **be/src/util/jvm_metrics.cpp:421:** +1, nesting level increased to 2
   ```cpp
           } else if (env->IsSameObject(threadState, _blockedThreadStateObj)) {
                  ^
   ```
   **be/src/util/jvm_metrics.cpp:423:** +1, nesting level increased to 2
   ```cpp
           } else if (env->IsSameObject(threadState, _waitingThreadStateObj)) {
                  ^
   ```
   **be/src/util/jvm_metrics.cpp:425:** +1, nesting level increased to 2
   ```cpp
           } else if (env->IsSameObject(threadState, 
_timedWaitingThreadStateObj)) {
                  ^
   ```
   **be/src/util/jvm_metrics.cpp:427:** +1, nesting level increased to 2
   ```cpp
           } else if (env->IsSameObject(threadState, 
_terminatedThreadStateObj)) {
                  ^
   ```
   **be/src/util/jvm_metrics.cpp:434:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_new_count->set_value(threadsNew < 0 ? 0 : 
threadsNew);
                                                                   ^
   ```
   **be/src/util/jvm_metrics.cpp:435:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_runnable_count->set_value(threadsRunnable < 0 ? 
0 : threadsRunnable);
                                                                             ^
   ```
   **be/src/util/jvm_metrics.cpp:436:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_blocked_count->set_value(threadsBlocked < 0 ? 0 
: threadsBlocked);
                                                                           ^
   ```
   **be/src/util/jvm_metrics.cpp:437:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_waiting_count->set_value(threadsWaiting < 0 ? 0 
: threadsWaiting);
                                                                           ^
   ```
   **be/src/util/jvm_metrics.cpp:439:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
               threadsTimedWaiting < 0 ? 0 : threadsTimedWaiting);
                                       ^
   ```
   **be/src/util/jvm_metrics.cpp:440:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       jvm_metrics->jvm_thread_terminated_count->set_value(threadsTerminated < 
0 ? 0
                                                                                
 ^
   ```
   **be/src/util/jvm_metrics.cpp:448:** +1, including nesting penalty of 0, 
nesting level increased to 1
   ```cpp
       for (int i = 0; i < numCollectors; i++) {
       ^
   ```
   **be/src/util/jvm_metrics.cpp:455:** +2, including nesting penalty of 1, 
nesting level increased to 2
   ```cpp
           if (gcNameStr != nullptr) {
           ^
   ```
   **be/src/util/jvm_metrics.cpp:456:** +3, including nesting penalty of 2, 
nesting level increased to 3
   ```cpp
               if (strcmp(gcNameStr, "G1 Young Generation") == 0) {
               ^
   ```
   **be/src/util/jvm_metrics.cpp:460:** +1, nesting level increased to 3
   ```cpp
               } else {
                 ^
   ```
   
   </details>
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to