문제

Heap, Young, Tenured 및 Perm 세대와 혼동됩니다.

누구든지 설명해 주시겠습니까?

도움이 되었습니까?

해결책

Java 가비지 컬렉터는 다음과 같습니다. 세대별 가비지 수집기.애플리케이션의 개체는 생성된 위치와 사용 방법에 따라 다양한 시간 동안 유지됩니다.여기서 중요한 통찰력은 수명이 짧은 객체와 장기 객체에 대해 서로 다른 가비지 수집 전략을 사용하면 각 사례에 맞게 GC를 특별히 최적화할 수 있다는 것입니다.

느슨하게 말하자면, 개체는 반복적인 가비지 수집에서 "생존"합니다. 젊은 세대 그들은 다음으로 마이그레이션됩니다. 종신 세대.그만큼 영구 세대 특별한 경우로, JVM에 필요하지만 프로그램에서 반드시 표시되지는 않는 개체(예: 클래스 및 메서드를 나타내는 개체)가 포함됩니다.

이후 젊은 세대 일반적으로 그 안에는 많은 쓰레기가 포함되어 있으므로 사용하지 않는 많은 개체를 한 번에 제거하는 데 최적화되어 있습니다.그만큼 종신 세대 수명이 긴 개체를 포함하므로 많은 메모리를 낭비하지 않고 빠른 가비지 수집에 최적화되어 있습니다.

가비지 수집 기술이 향상되면서 세부 사항이 매우 복잡해졌으며 JVM 및 구성 방법에 따라 달라졌습니다.당신은 읽어야합니다 선적 서류 비치 무슨 일이 일어나고 있는지 정확히 알아야 하는 경우 사용 중인 특정 JVM에 대해.

즉, 개념적 수준에서 여전히 유용한 간단한 역사적 배열이 있습니다.역사적으로 젊은 세대 될 것이다 복사 수집가 그리고 종신 세대 가 되다 마크 앤 스윕 수집기.ㅏ 복사 수집가 기본적으로 쓰레기를 제거하는 데 CPU 비용을 지불하지 않으며 대부분의 비용은 라이브 개체를 유지하는 데 소요되며 이러한 효율성의 대가는 메모리 사용량이 더 많다는 것입니다.ㅏ 마크 앤 스윕 수집기 활성 객체와 사용되지 않은 객체 모두에 대해 약간의 CPU 비용을 지불하지만 메모리를 보다 효율적으로 활용합니다.

다른 팁

자바 힙 메모리 운영 체제에 의해 JVM에 할당 된 메모리의 일부입니다. 우리가 객체를 만들 때마다 내부에 생성됩니다 자바에서 힙.

Java 힙 공간 가비지 컬렉션을 위해 3 개 지역 또는 세대로 나뉘어져 있습니다. 젊은 세대, 노인 또는 임기 세대 및 영구 세대. 영구 생성은 핫스팟 JVM에서 전체 GC 중에 수집 된 쓰레기입니다.

그만큼 젊은 세대 모든 새 개체가 할당되고 노화되는 곳입니다. 젊은 세대가 채워지면 사소한 쓰레기 수거가 발생합니다. 죽은 물체로 가득 찬 젊은 세대가 매우 빨리 수집됩니다. 살아남은 물체는 노화되어 결국 구식으로 이동합니다.

그만큼 구 세대 오래 살아남은 물건을 저장하는 데 사용됩니다. 일반적으로, 젊은 세대 대상에 대해 임계 값이 설정되며, 그 나이가 충족되면 물체가 구식으로 이동합니다. 결국 구식을 수집해야합니다. 이 행사를 주요 쓰레기 수집이라고합니다.

그만큼 영구 세대 응용 프로그램에 사용 된 클래스 및 메소드를 설명하기 위해 JVM이 필요한 메타 데이터를 포함합니다. 영구 생성은 응용 프로그램에서 사용하는 클래스를 기반으로 런타임에 JVM에 의해 채워집니다.

페름기 대체되었습니다 Metaspace Java 8 릴리스 이후. permsize & maxpermsize 이제 매개 변수가 무시됩니다. 이것을보세요 DZONE 기사 ~에 의해 Pierre -Hugues Charbonneau는 Metaspace에 대해 이해합니다.

enter image description here

이미지 출처 :http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

자세한 내용은 동일한 기사를 참조하십시오.

힙의 모든 물체는 참조 될 때 살아남습니다. 더 많지 않을 때는 쓰레기 수집가 (GC)가 기억을 되 찾을 것입니다.

젊고 임기는 Permgen은 물체 (또는 힙의 공간이 될 수있는 공간)의 상이한 상처입니다.

Permgen : 이 물건들은 항상 거기에있을 것이며, 수집 된 쓰레기가 아닙니다. 클래스 객체가 있고, 인턴 줄 등이 있습니다. 나는 거기에 GC가 있는지 모르겠습니다 (시스템이 클래스를 내릴 때 ... 그러나 그것은 정상적인 것이 아닙니다).

어린: 객체가 만들어지면 여기에 있습니다.

임기 : 객체는 N GC 패스에서 살아남을 때이 분류/카테고리로 이동합니다 (Survive = GC 패스이지만이 객체는 참조되므로 회수 할 수 없습니다).

사용 된 GC와 일부 매개 변수화에 따라 GC는 다소 자주 전달됩니다.

그런 다음 쓰레기 수집은 힙의 Maange 물체와 다른 접근 방식을 가질 수 있습니다. 이 객체의 분류는 그것을 수행하는 데 도움이됩니다.

다음은 GC 매개 변수를 조정/크기를 조정하는 방법에 대한 또 다른 우수한 (긴) 기사입니다. 이는 더 많은 것을 이해하는 데 도움이 될 수 있습니다.

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/

GC 문제가 있고 GC 로그를 읽는 방법을 알아야하거나 현재 GC 수집가의 작동 방식을 이해해야하는 경우 매우 유용한 읽기입니다.

실행중인 시스템의 원격 모니터링을 연결하여 실시간 메모리 사용량을 확인하고 GC가 실행되는 경우이 도구를 확인하십시오.

http://java.sun.com/performance/jvmstat/visualgc.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top