"Garbage Collector"실행은 JVM에 의해서만 제어되어야 합니다.

 

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. :star2:

원문으로 바로가기

Star This Project