자바 쓰레기 수 거 그 얘 기

1185 단어
자바 는 언어 적 으로 jvm 에 쓰레기 수 거 를 강제 할 수 있 도록 제공 합 니 다. 우리 프로그램 에 서 는 System. gc 를 호출 하여 jvm 에 쓰레기 수 거 를 강제 할 수 있 습 니 다. 원본 코드 를 통 해 우 리 는 실제 적 으로 Runtime 을 호출 하여 gc 를 강제 하 는 것 을 볼 수 있 습 니 다.
public static void gc() {
	Runtime.getRuntime().gc();
    }

Runtime 의 gc 방법 은 native 방법, 즉 Rumtime. c 의 것 입 니 다.
JNIEXPORT void JNICALL
Java_java_lang_Runtime_gc(JNIEnv *env, jobject this)
{
    JVM_GC();
}

그리고 JVMGC 방법 은 jvm. cpp 에서 이 루어 집 니 다.
JVM_ENTRY_NO_ENV(void, JVM_GC(void))
  JVMWrapper("JVM_GC");
  if (!DisableExplicitGC) {
    Universe::heap()->collect(GCCause::_java_lang_system_gc);
  }
JVM_END

코드 에서 사용 할 수 있 는 인자 DisableExplicitGC 를 보 았 습 니 다. - XX: + DisableExplicitGC 는 system, gc 를 닫 을 수 있 습 니 다.
유 니 버 시 티: heap () - > Universe::collected Heap 은 초기 화 할 때 어떤 종류의 힙 을 사용 할 지 결정 하고 어떤 gc 를 사용 할 지 결정 합 니 다. 즉, 자바 힙 의 배분 방식 은 자바 가 시 작 될 때 결정 되 며 중간 에 변경 할 수 없고 같은 gc 정책 도 변경 할 수 없습니다.
소스 코드 에서 볼 수 있 습 니 다.
Parallel GC 는 Parallel ScavengeHeap 을 사용 합 니 다. 
CMS 는 GenCollectdHeap 을 사용 합 니 다. 
G1 은 G1CollectedHeap 을 사용 합 니 다.

좋은 웹페이지 즐겨찾기