운영 체제 에서 힙 과 Stack 의 차이
5743 단어 자바-기초
힙 이랑 Stack 이 뭐 예요?
스 택 은 두 가지 데이터 구조 이다.스 택 은 모두 데이터 항목 을 순서대로 배열 하 는 데이터 구조 로 한 끝 (스 택 꼭대기 (top) 에서 만 데이터 항목 을 삽입 하고 삭제 할 수 있 습 니 다. = =싱글 칩 마이크로컴퓨터 응용 에서 스 택 은 특수 한 저장 구역 으로 주요 기능 은 데이터 와 주 소 를 잠시 저장 하 는 것 이다 = = 보통 정지점 과 현장 을 보호 하 는 데 사용 된다.
:
: , (FIFO—first in first out)。
: (FILO—First-In/Last-Out)。
힙 과 Stack 은 어떤 차이 가 있 습 니까?
1. 스 택 공간 분배 차이:
1. 스 택 (운영 체제): 운영 체제 에서 자동 으로 분배 하여 방출 하고 함수 의 매개 변수 값, 부분 변수의 값 등 을 저장 합 니 다.그 조작 방식 은 데이터 구조 중의 창고 와 유사 하 다.2. 더미 (운영 체제): 일반적으로 프로그래머 가 분배 하여 방출 한다. 만약 에 프로그래머 가 방출 하지 않 으 면 프로그램 이 끝 날 때 OS 에서 회수 할 수 있 고 분배 방식 은 체인 테이블 과 유사 하 다.
2. 스 택 캐 시 방식 차이:
1. 스 택 은 1 급 캐 시 를 사용 합 니 다. 그들 은 보통 호출 될 때 저장 공간 에 있 고 호출 이 끝나 면 바로 방출 합 니 다.
2. 더 미 는 2 급 캐 시 에 저장 되 고 생명 주 기 는 가상 컴퓨터 의 쓰레기 회수 알고리즘 에 의 해 결정 된다 (고아 대상 이 되면 회수 되 는 것 이 아니다).그래서 이 대상 들 을 호출 하 는 속 도 는 상대 적 으로 낮 아야 한다.
3. 스 택 데이터 구조 차이:
쌓 기 (데이터 구조): 쌓 기 는 나무 로 볼 수 있 습 니 다. 예 를 들 어 쌓 기 정렬;
스 택 (데이터 구조): 선진 적 인 데이터 구조 입 니 다.
자바 스 택 과 더미 의 차이 점:
스 택 (stack) 과 더미 (hep) 는 모두 자바 가 램 에 데 이 터 를 저장 하 는 곳 입 니 다.C + + 와 달리 자바 는 스 택 과 더 미 를 자동 으로 관리 하고 프로그래머 는 스 택 이나 더 미 를 직접 설정 할 수 없습니다.
함수 에서 정의 하 는 기본 형식의 변수 와 대상 의 인용 변 수 는 모두 함수 의 스 택 메모리 에서 분 배 됩 니 다.코드 블록 에서 변 수 를 정의 할 때 자바 는 스 택 에서 이 변 수 를 위해 메모리 공간 을 분배 합 니 다. 변 수 를 초과 한 역할 영역 이 있 으 면 자바 는 이 변수 에 분 배 된 메모리 공간 을 자동 으로 방출 합 니 다. 이 메모리 공간 은 즉시 다른 용도 로 사용 할 수 있 습 니 다.
메모리 더 미 는 new 가 만 든 대상 과 배열 을 저장 하고 더미 에서 분 배 된 메모 리 는 자바 가상 컴퓨터 의 자동 쓰레기 회수 기 에서 관리 합 니 다.더미 에 배열 이나 대상 이 생 긴 후에 스 택 에서 특수 한 변 수 를 정의 할 수 있 습 니 다. 스 택 에 있 는 이 변 수 는 배열 이나 대상 이 메모리 에 있 는 첫 번 째 주소 와 같 습 니 다. 스 택 에 있 는 이 변 수 는 배열 이나 대상 의 참조 변수 가 됩 니 다.인용 변 수 는 배열 이나 대상 을 위 한 이름 과 같 습 니 다. 나중에 프로그램 에서 스 택 에 있 는 인용 변 수 를 사용 하여 쌓 여 있 는 배열 이나 대상 에 접근 할 수 있 습 니 다.
메모리 에서 자바 변수 할당:
1. 클래스 변수 (static 수식 변수): 프로그램 이 불 러 올 때 시스템 은 더미 에 메모 리 를 열 어 주 고 쌓 인 메모리 주 소 는 스 택 에 저장 하여 고속 접근 을 편리 하 게 합 니 다.정적 변수의 생명주기 - 전체 '시스템' 이 닫 힐 때 까지 계 속 됩 니 다.
2. 인 스 턴 스 변수: 자바 키워드 new 를 사용 할 때 시스템 이 더미 에서 열 리 는 것 은 반드시 연속 적 인 공간 이 변수 (예 를 들 어 클래스 인 스 턴 스) 에 배분 되 는 것 이 아니 라 흩 어 진 메모리 주소 에 따라 해시 알고리즘 을 통 해 긴 문자열 의 숫자 로 환산 하여 이 변 화 량 이 쌓 여 있 는 '물리 적 위치' 를 나타 낸다.인 스 턴 스 변수의 수명 주기 - 인 스 턴 스 변수의 인용 을 잃 어 버 리 면 GC (쓰레기 회수 기) 에 의 해 회수 가능 한 '명단' 에 들 어가 지만 바로 메모리 가 방출 되 는 것 은 아 닙 니 다.
3. 부분 변수: 부분 변 수 는 특정한 방법 이나 특정한 코드 세그먼트 (예 를 들 어 for 순환) 에서 설명 되 고 실 행 될 때 스 택 에서 메모 리 를 열 고 부분 변수 가 작용 영역 에서 벗 어 나 면 메모리 가 즉시 방출 됩 니 다.자바 메모리 문제 와 관련 되 려 면 자바 메모리 메커니즘 을 참고 하 십시오.
자바 간단 한 스 택 인 스 턴 스 코드 구현:
스 택 (Stack) 은 흔히 볼 수 있 는 데이터 구조 로 후진 선 출 (First In Last Out) 원칙 에 부합 되 며 대상 저장 순 서 를 실현 하 는 역순 으로 사용 된다.스 택 의 기본 동작 은 push (스 택 에 추가), pop (스 택 에서 삭제), peek (스 택 상단 요 소 를 검사 하고 삭제 하지 않 음) 가 있 습 니 다.
/**
* Created by Frank
*/
public class ToyStack {
/**
*
**/
protected int MAX_DEPTH = 10;
/**
*
*/
protected int depth = 0;
/**
*
*/
protected int[] stack = new int[MAX_DEPTH];
/**
* push,
*
* @param n
*/
protected void push(int n) {
if (depth == MAX_DEPTH - 1) {
throw new RuntimeException(" , 。");
}
stack[depth++] = n;
}
/**
* pop,
*
* @return
*/
protected int pop() {
if (depth == 0) {
throw new RuntimeException(" , 。");
}
// --depth,dept 1 dept, 1 ( )。
return stack[--depth];
}
/**
* peek,
*
* @return
*/
protected int peek() {
if (depth == 0) {
throw new RuntimeException(" , 。");
}
return stack[depth - 1];
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 부모 클래스 참조 지향 하위 클래스 대상글 목록 1.코드 예제 2.인터페이스 프로 그래 밍 을 위 한 사상 3.주의 코드 예제 을 이상 보 았 으 니 의문 이 있 을 수 있 습 니까?WTF???두 번 째 방법 은 많 지만 오히려 쓰 지 않 는 다??이것 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.