일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- span width 설정
- 인스턴스
- 변경
- 테이블 생성
- 회원가입페이지
- 변수
- 다음주소API
- 자바
- 주소
- API
- 카카오 로그인
- 카카오로그인
- openChallenge
- 유효성검사
- textarea
- 로그인
- 반복문
- 크기조정
- restAPI
- id 개별 부여
- 셀렉터
- 별찍기
- 연산자 우선순위
- 스타일 시트
- jsp
- 42000
- 없애기
- 로그아웃
- 조건문
- rest api
- Today
- Total
뚜벅이 한걸음
인스턴스와 힙메모리 본문
앞의 게시물에서 인스턴스에 대해서 알아보았다.
인스턴스에 대해 설명하면서 주솟값을 참조 변수에 담는다고 하였는데
우리가 new 연산자를 이용하여 객체를 생성하면 이 객체가 가지고 있는 멤버 변수 등을 저장할 공간이 필요하다. 이때 사용하는 메모리가 힙메모리이다.
힙 메모리를 보려면 스택을 먼저 봐야 한다.
Stack은 기본 자료형(byte, int, double, long 등,,)에 해당하는 지역변수들의 데이터 값이 저장되는 공간이다.
어떠한 메소드가 호출이되면 스택 메모리에 공간이 할당이 되고 메서드가 종료되면 메모리가 해제된다.
다음으로 힙 메모리는 new 연산자를 이용하여 객체를 생성하면 인스턴스에 대한 정보가 저장되는 곳이다. 사용이 끝나면 메모리를 해제해 주어야 한다. 자바에서는 garbage collector 가 자동으로 메모리를 해제한다.
인스턴스를 두 개 생성하면 힙영역에 두 개의 인스턴스가 할당된다.
Student studentAhn = new Student();
studentAhn의 변수는 지역변수로 스택 메모리에 형성이 되고, 인스턴스는 힙 메모리에 형성이 된다.
위처럼 대입 연산자를 이용하여 생성된 클래스를 변수에 대입하면, studentAhn이 인스턴스가 저장된 메모리를 가리키게 된다.
스택 메모리
studentAhn
|
↓
힙 메모리
student 클래스 생성
|
studentAhn은 지역변수로서 스택 영역에 저장된다.
위의 화살표 표시는 지역변수에 생성된 인스턴스의 힙 메모리의 주소를 대입한다는 의미다.
이렇게 클래스가 생성될 때마다 인스턴스는 다른 메모리 공간을 차지해서
인스턴스의 멤버 변수가 매번 새로 생성된다. 그래서 멤버 변수를 인스턴스 변수라고도 부른다.
'java' 카테고리의 다른 글
참조 자료형 (0) | 2022.07.10 |
---|---|
Java 생성자 (0) | 2022.07.10 |
Java 클래스와 인스턴스 (0) | 2022.07.10 |
Java 메서드 (0) | 2022.07.10 |
자바 클래스 조금 더 살펴보기 (0) | 2022.07.10 |