Java에는 데이터를 저장할 수 있는 위치가 6곳이 있습니다.
는 프로세서 내부에 위치하기 때문에 접근 속도가 매우 빠르고 프로그램이 가장 빠른 저장 영역이다. 통제할 수 없습니다.
은 범용 RAM에 위치한 스택입니다. 저장 속도는 등록에 이어 두 번째입니다. 바늘.
다음과 같은 특징을 가지고 있습니다.
스택포인터를 통해 메모리를 제어합니다. 아래로 이동하면 새 메모리가 할당되고, 위로 이동하면 해당 메모리가 해제됩니다. 따라서 프로그램을 생성할 때 Java 컴파일러는 스택 포인터를 위아래로 이동하기 위한 적절한 코드를 생성해야 하기 때문에 스택에 저장된 모든 데이터의 정확한 크기와 수명을 알아야 합니다.
스택 메모리는 단일 스레드에 속합니다. 각 스레드는 스택 메모리를 가지며, 이 스레드가 저장하는 변수는 해당 스레드가 속한 스레드에서만 볼 수 있습니다. 즉, 스택 메모리는 스레드의 전용 메모리로 이해될 수 있습니다.
스택 내 데이터 공유.
은 기본 유형의 변수 데이터, 객체 또는 배열에 대한 참조를 저장합니다. 하지만 객체 자체는 스택에 저장되지 않고 힙(new로 생성된 객체)이나 상수 풀(문자열 상수 객체는 상수 풀에 저장됨)에 저장됩니다.
FILO 선입후출 규칙이 있습니다.
은 힙입니다(RAM에도 있음). 모든 Java 객체를 저장하는 데 사용됩니다. 평신도의 관점에서 말하면 모든 새로운 객체를 저장하는 것입니다.
힙과 스택의 차이점은 저장소 할당에 있어 유연성이 뛰어나지만 시간이 더 오래 걸린다는 것입니다. 이유:
컴파일러는 힙에서 할당할 저장 영역의 양을 알 필요가 없습니다.
또한 컴파일러는 저장된 데이터가 힙에 얼마나 오래 존재하는지 알 필요가 없습니다.
객체를 생성해야 할 때 간단한 코드 한 줄만 작성하면 이 코드 줄이 실행되면 저장소가 자동으로 힙에 할당됩니다.
은 로드된 클래스 정보, 상수, 정적 변수, Just-In-Time 컴파일러로 컴파일된 코드를 저장하는 데 사용됩니다.
상수 풀은 메소드 영역의 일부입니다.
String str="www"와 같은 문자열 상수 및 기본 유형 변수를 저장합니다. 실제로 "www"는 상수 풀에 있습니다.
Java의 8가지 기본 유형(Byte, Short, Integer, Long, Character, Boolean, Float, Double)은 Float 및 Double을 제외한 나머지 6가지 유형은 모두 상수 풀을 구현하지만 (- 128
Java에는 데이터를 저장할 수 있는 위치가 6개 있습니다.
는 프로세서 내부에 위치하기 때문에 접근 속도가 매우 빠르고 프로그램이 가장 빠른 저장 영역이다. 통제할 수 없습니다.
은 범용 RAM에 위치한 스택입니다. 저장 속도는 등록에 이어 두 번째입니다. 바늘.
다음과 같은 특징을 가지고 있습니다.
스택포인터를 통해 메모리를 제어합니다. 아래로 이동하면 새 메모리가 할당되고, 위로 이동하면 해당 메모리가 해제됩니다. 따라서 프로그램을 생성할 때 Java 컴파일러는 스택 포인터를 위아래로 이동하기 위한 적절한 코드를 생성해야 하기 때문에 스택에 저장된 모든 데이터의 정확한 크기와 수명을 알아야 합니다.
스택 메모리는 단일 스레드에 속합니다. 각 스레드는 스택 메모리를 가지며, 이 스레드가 저장하는 변수는 해당 스레드가 속한 스레드에서만 볼 수 있습니다. 즉, 스택 메모리는 스레드의 전용 메모리로 이해될 수 있습니다.
스택 내 데이터 공유.
은 기본 유형의 변수 데이터, 객체 또는 배열에 대한 참조를 저장합니다. 하지만 객체 자체는 스택에 저장되지 않고 힙(new로 생성된 객체)이나 상수 풀(문자열 상수 객체는 상수 풀에 저장됨)에 저장됩니다.
FILO 선입후출 규칙이 있습니다.
은 힙입니다(RAM에도 있음). 모든 Java 객체를 저장하는 데 사용됩니다. 평신도의 관점에서 말하면 모든 새로운 객체를 저장하는 것입니다.
힙과 스택의 차이점은 저장소 할당에 있어 유연성이 뛰어나지만 시간이 더 오래 걸린다는 점입니다. 이유:
컴파일러는 힙에서 할당할 저장 영역의 양을 알 필요가 없습니다.
또한 컴파일러는 저장된 데이터가 힙에 얼마나 오래 존재하는지 알 필요가 없습니다.
객체를 생성해야 할 때 간단한 코드 한 줄만 작성하면 이 코드 줄이 실행되면 저장소가 자동으로 힙에 할당됩니다.
은 로드된 클래스 정보, 상수, 정적 변수, Just-In-Time 컴파일러로 컴파일된 코드를 저장하는 데 사용됩니다.
상수 풀은 메소드 영역의 일부입니다.
String str="www"와 같은 문자열 상수 및 기본 유형 변수를 저장합니다. 실제로 "www"는 상수 풀에 있습니다.
Java의 8가지 기본 유형(Byte, Short, Integer, Long, Character, Boolean, Float, Double)은 Float 및 Double을 제외한 나머지 6가지 유형은 모두 상수 풀을 구현하지만 (- 128
위 내용은 15.Java Basics - Heap & Stack 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!