jvm 메모리 구조 예제

JVM 메모리 모델을 이해, 자바 메모리 관리는 자바 가비지 수집의 작업을 이해하려는 경우 매우 중요합니다. 오늘은 Java의 메모리 관리, JVM 메모리의 다른 부분 및 가비지 수집 튜닝을 모니터링하고 수행하는 방법을 살펴보겠습니다. 스택 메모리는 힙 개체에 대한 참조를 보유하고 힙에서 개체에 대한 참조가 아니라 값 자체를 보유하는 값 형식(Java에서 기본 형식이라고도 함)을 저장합니다. 긴 형식 또는 double 형식의 값은 두 개의 연속된 지역 변수를 차지합니다. 이러한 값은 더 작은 인덱스를 사용하여만 해결할 수 있습니다. 예를 들어 인덱스 n의 로컬 변수 배열에 저장된 double 형식의 값은 실제로 인덱스 n 및 n+1이 있는 로컬 변수를 차지합니다. 그러나 인덱스 n+1의 로컬 변수는 로드할 수 없습니다. 에 저장 될 수 있습니다. 그러나 이렇게 하면 로컬 변수 n의 내용이 무효화됩니다. 이것은 내가 인터넷에서 읽은 최고의 튜토리얼입니다, 매우 명확하게 가비지 수집에 메모리 할당에서 모든 것을 커버. 명예.

자바 플랫폼의 가장 큰 강점 중 하나는 자바 가상 Maschine에서 자동 메모리 관리의 구현이다. C/C++와 같은 언어로 프로그래밍한 모든 사람은 코드에서 메모리 할당 및 할당 할당을 관리하는 문제에 대해 알고 있습니다. Java에서는 너무 일찍 메모리를 할당하거나(손상된 포인터) 또는 너무 늦게(메모리 누수)와 같은 문제가 사양에 따라 발생할 수 없습니다. 질문은 : 왜 이 블로그 항목을 작성하고 있습니까? 메모리 누수 발생 하는 경우 더 이상 필요 하지 않는 개체 참조를 불필요 하 게 유지 관리 됩니다. 런타임 데이터 영역은 데이터를 저장하도록 설계된 메모리 내 영역입니다. 이러한 데이터는 개발자 프로그램 또는 JVM에서 내부 작업을 위해 사용됩니다. 힙 및 비 힙 메모리 사용 원격 측정은 메모리 탭에 표시됩니다 : 자바 메모리 모델에 대한 가장 좋은 설명, 정말 도움이되었다 …. Java OutOfMemoryError에 대한 블로그 시리즈의 이 부분은 Java 메모리 아키텍처를 자세히 소개하고 java.lang.OutOfMemoryError가 발생할 수 있는 메모리 영역을 보여줍니다.

이러한 오류의 원인과 분석 도구 및 방법에 대한 자세한 내용은 이후 항목에서 다룹니다. JVM 내부의 모든 스레드에 사용할 수 있는 두 번째 메모리 영역은 힙입니다. Java 힙은 런타임시 클래스(개체) 및 배열의 인스턴스를 관리합니다. 힙은 JVM 시작 시 만들어지며 크기는 정적 또는 동적일 수 있습니다. JVM 사양은 Java 힙에서 개체의 메모리를 회수하기 위한 가비지 수집 메커니즘을 요구합니다. 가비지 수집기의 구현은 지정되지 않았지만 프로그래머에게 개체의 메모리를 할당하기 위한 명시적 메커니즘을 제공할 수는 없습니다. 모든 Java 개발자가 알아야 할 메모리 문제 중 가장 일반적인 문제는 다음과 같습니다: 개체의 유지 크기는 얕은 크기와 이 개체에서만 직접 또는 간접적으로 액세스할 수 있는 개체의 얕은 크기입니다. 즉, 보존 된 크기는이 개체를 수집 할 때 가비지 수집기에서 해제 될 메모리양을 나타냅니다. 일반적으로 유지 크기는 메모리의 구조(클러스터링)와 개체 하위 그래프 간의 종속성을 이해하고 이러한 하위 그래프의 잠재적인 루트를 찾는 데 도움이 되는 통합 측정값입니다. 메모리 크기 제한 등과 같은 몇 가지 큰 차이점이 있습니다.

나는 내 다음 튜토리얼에서 곧 그들을 다룰 것입니다. 또한 스택의 변수에는 범위라고도 하는 특정 가시성이 있습니다. 활성 범위의 개체만 사용됩니다. 예를 들어 전역 범위 변수(필드)가 없고 로컬 변수만 있다고 가정하면 컴파일러가 메서드본문을 실행하는 경우 메서드 본문 내에 있는 스택의 개체만 액세스할 수 있습니다. 범위가 범위를 벗어났기 때문에 다른 로컬 변수에 액세스할 수 없습니다. 메서드가 완료되고 반환되면 스택의 맨 위가 튀어 나와 활성 범위가 변경됩니다. 이러한 유형의 참조는 응용 프로그램의 메모리가 부족할 때만 가비지 수집되므로 메모리에 민감한 시나리오에 사용됩니다.

Mentalny Teatr Hipnozy > jvm 메모리 구조 예제