System.gc()
또는 Runtime.getRuntime().gc()
를 호출하는 것은 다음과 같은 간단한 이유로 나쁜 생각입니다. 해당 동작이 공급 업체, 버전, 그리고 옵션에 의존적이기 때문에 JVM 내부에서 실행되는 것에 대해 정확하게 알 수 있는 방법이 없습니다.
- 호출 도중 전체 어플리케이션이 정지됩니까?
-
-XX:DisableExplicitGC
옵션이 활성화 되어있습니까? - JVM이 단순히 호출을 무시했습니까?
System.gc()
와 마찬가지로, runFinalization()
을 호출하여 종료 보류중인 객체의 종료 메서드를 강제로 실행시킬 이유는 없습니다.
어플리케이션이 예측불가능한 함수에 의존하고 있다면 예측불가능하게 종료될 수 있습니다. garbage collector
를 실행시키고 finalize()
함수를 호출하는 것은 오직 JVM에 의해서만 실행되어야 합니다.
If you like SONARKUBE, don’t forget to give me a star.