힙과 스택에 대해 이야기하기 전에 먼저 JVM(가상 머신) 메모리의 분할에 대해 이야기해 보겠습니다. (추천 학습: java 과정 )
Java 프로그램은 실행 시 공간을 열어야 하며, 소프트웨어는 실행 시 메모리 공간을 열어야 하고, 자바 가상 머신 역시 실행 시 공간을 열어야 합니다.
JVM은 실행될 때 메모리에 메모리 영역을 열고 시작할 때 이를 자체 메모리 영역에 더 세심하게 나눕니다. 가상 머신의 각 메모리 조각은 서로 다른 방식으로 처리되기 때문입니다. 별도로 관리합니다.
JVM 메모리는
2. 로컬 메소드 영역 4.힙과 스택에 중점을 두겠습니다.
스택 메모리:
스택 메모리는 우선 로컬 변수를 저장하는 메모리 영역입니다. 메서드에 정의된 모든 것은 로컬 변수입니다(메서드 외부의 변수는 전역 변수입니다. 변수), 지역 변수는 지역 변수를 정의하기 전에 먼저 함수를 로드해야 합니다. 따라서 변수는 먼저 스택된 다음 변수가 자체 범위를 갖습니다. 범위, 변수가 릴리스됩니다.지역 변수의 수명주기가 매우 짧기 때문에 스택 메모리는 매우 빠르게 업데이트됩니다.
힙 메모리: 배열과 객체를 저장합니다(실제로 배열은 객체입니다). 엔터티(객체)는 힙에 저장되며 여러 개로 캡슐화됩니다. (엔티티의 여러 속성) 하나의 데이터가 사라져도 엔터티는 사라지지 않고 계속 사용할 수 있으므로 힙은 언제든지 해제되지 않지만 스택에는 단일 변수만 저장됩니다. 변수는 일단 해제되면 사라집니다.
힙에 있는 항목은 해제되지 않지만 가비지로 처리됩니다. Java에는 수시로 항목을 수집하는 가비지 수집 메커니즘이 있습니다.힙과 스택의 차이점:
1. 스택 메모리는 로컬 변수를 저장하는 반면 힙 메모리는 엔터티를 저장합니다.
2 로컬 변수는 수명 주기가 매우 짧기 때문에 스택 메모리는 더 빠르게 업데이트됩니다.
3. 스택 메모리에 저장된 변수는 수명 주기가 끝나면 해제되는 반면, 힙 메모리에 저장된 엔터티는 때때로 가비지 수집 메커니즘에 의해 재활용됩니다.
위 내용은 Java의 스택과 힙의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!