Java [JAVA] # 포인터 VS 참조 자료형 - 자료형에 대한 포스트에서 JAVA의 참조 자료형은 C언어의 포인터와 비슷한 개념이라고 하였다. JAVA의 참조 자료형이 C언어의 포인터와 다른 점은 무엇일까? (링크 참고 : [JAVA] 03. 자바 프로그램의 자료형 https://jiyesmoon.tistory.com/10) [JAVA] 03. 자바 프로그램의 자료형 자료형(Data Type)은 컴퓨터 내부의 데이터를 식별하는 분류입니다. 컴퓨터 내부에서는 자료형에 따라 처리되는 연산, 수행 가능한 명령들, 데이터의 의미, 저장 방식 등이 결정됩니다. 이번 장에 jiyesmoon.tistory.com 📌 I. JAVA 변수 저장 방식 기본 자료형 : 값을 기본 변수에 저장 참조 자료형 : 배열, 클래스, 인터페이스 타입의 객체 참조값(id)를 레퍼런스 변수에 저장 (위) 기본 자료형 / (아래) 참조 자료형 📌 II. 객체 지향 언어 (Object-Oriented Programming, OOP) 다른 포스트에서 배울 개념이지만, 참조 자료형의 설명을 위해 간단히 소개하겠습니다. 객체 : 현실 세계의 독립적인 사물 또는 대상을 모방한 프로그램상의 속성를 가리킴 클래스 : 객체를 만들기 내기 위한 설계도 클래스에 의해 메모리가 할당된 결과물이 객체 클래스는 객체 내의 값을 저장하는 멤버 필드와 객체의 행동을 구현하는 함수인 메소드 부분으로 나뉩니다. 📌 III. JVM의 메모리의 구조 특징 📚 1. 일반적인 프로그램 메모리 구조 정적 메모리 영역 / 정적 메모리 할당 * 이미 메모리 공간의 크기가 정해져 있는 고정적 메모리 영역 동적 메모리 영역 / 동적 메모리 할당 * 유동적으로 변화하는 메모리 영역* 프로그램이 실행시 실행되는 메모리 공간 📚 2. 자바(Java) JVM 메모리 구조 JVM(Java Virtual Machine)은 운영체제에서 할당받은 메모리 영역을 세 가지 세부 영역으로 구분하여 사용합니다. 용도 및 특징 STATIC Area(Method Area) (1) static 키워드로 설정된 Class의 변수와 메소드가 제공되는 공간(2) 객체 생성 없이 사용 가능(3) 프로그램이 종료될 때 자동 할당 해제됨 HEAP Area (1) 클래스로 만들어진 객체(인스턴스), 배열 등이 할당됨(2) JVM이 관리(3) new 연산자에 의해 동적 할당됨(4) 객체가 더이상 사용되지 않을 때 할당해제됨 (가비지 컬렉션의 대상) STACK Area (1) 메소드 영역, 참조형 변수 등이 할당됨(2) 메소드의 지역변수와 매개변수가 저장됨(3) 메소드나 블록이 끝날 때 자동 할당해제됨 📚 3. JVM의 GC(Garbage Collector) 객체는 생성시 힙(Heap) 영역에 저장되고, 참조변수는 스택(Stack) 영역에서 선언되어 힙(Heap) 영역의 참조값(id)를 저장 힙(Heap) 메모리의 특정 영역이 가득차면 JVM은 스택(Stack) 영역에서 참조되지 않는 힙(Heap) 영역의 객체를 제거하는 GC(Garbage Collector)를 수행 자바에서는 C언어의 포인터와 같이 임의의 메모리 값을 설정하게 된다면, GC에 의해 바뀐 주소값을 알지 못하고 잘못된 접근을 할 위험이 있음 때문에 자바의 참조 자료형은 임의의 메모리 주소를 저장할 수 없음 📌 IV. C언어의 포인터와 JAVA의 참조 자료형 비교 포인터 참조 자료형 메모리 값 설정 자율성 높다 낮다 메모리 관리 편의성 낮다 높다 메모리 접근 안정성 낮다 높다 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기다라다라 Contents 당신이 좋아할만한 콘텐츠 [Java] 05. 클래스의 멤버 2022.09.29 [Java] 04. 클래스와 객체 2022.09.28 [JAVA] 03. 자바 프로그램의 자료형 2022.09.22 [JAVA] 02. 자바 프로그램의 기본 구조 2022.09.22 댓글 1 + 이전 댓글 더보기