티스토리 뷰
자바 메모리 구조
- 메서드 영역: 모든 영역에서 공유, 클래스 정보, static
- 스택 영역 : 지역변수, 중간 연산 결과, 메소드 호출정보(종료되면 stack에서 삭제), 각 쓰레드 별로 생성됨
- 힙 영역 : 객체(인스턴스), 배열이 생성되는 영역 , GC가 이루어지는 영역
* 인스턴스는 내부에 변수와 메소드를 가진다. 하지만 인스턴스가 생성될 때, 변수에는 메모리(힙에)가 할당 되지만 메서드에 대해서는 새로운 메모리를 부여하지 않는다. 메서드는 메서드 영역에서 코드를 호출하여 수행하게 된다.
static
- 인스턴스 끼리 공유할 수 있게 한다. (메서드 영역을 참조), 붕어빵 틀에서 나온
- static이 붙은 필드를 클래스,static, 정적 변수라고 함(static 안 붙은 필드는 인스턴스 변수)
- static이 붙으면 클래스 붙어서, 메서드 영역에 생성 된다! (클래스 레벨)
- static 메소드는 객체 생성 없이 사용은 가능 하지만, 당연히 인스턴스 레벨단에 변수나 메서드에는 접근X(컴파일 에러)
- main함수도 static 이여서 객체 생성 없이 사용이 가능했던 것, 따라서 정적메소드인 main에서 객체 생성 없이 다른 메소드를 호출하려면 당연히 그 메소드도 정적 메소드인 static 이여야 함
final
final은 메소드 ,클래스, 변수에 다 사용 가능하다. 매우 유용한 제약(제약이 많아야 좋은 코드다.)
final은 최초 선언 후, 딱 1번만 값 할당 가능하다.
상수 사용이유 : 유지보수가 편해지고, 매직넘버(코드를 읽을 때 보이는 숫자, 수정자는 이 숫자의 의미를 알기 쉽지 않음)를 없앨 수 있다.
'JAVA' 카테고리의 다른 글
JAVA GC 동작 원리 이해 (0) | 2025.04.06 |
---|---|
[김영한 자바강의] 상속 (0) | 2024.11.21 |
김영한 자바강의 6강 - 접근 제어 (0) | 2024.06.18 |
김영한 자바강의 5강 - 패키지 import (0) | 2024.03.12 |
김영한 자바 강의 2강 -기본형과 참조형 (1) | 2024.03.05 |
- Total
- Today
- Yesterday
- SQLD 후기
- Optinal Chaining
- 원자 원소 분자 차이점
- java garbage collector 기본
- 부트스트랩 템플릿 사용시 충돌
- 왜 트랜스지방은 살 찜
- gc란 뭘까
- java gc
- vue정리
- Property or method "" is not defined
- Netlify #CICD
- 나머지연산 분배법칙
- safe operator
- Prim vs Dijkstra
- 청년 버팀목 대출
- 버팀목 국민은행
- 스프링 기본 구조
- gc 기본 동작 원리
- java 김영한 강의 #2chapter
- SSAFY 6기
- 프로시저 #배치 #스케쥴러 #잡 #바인딩변수
- 스프링 동작흐름
- JAVA설치 #JDK #JRE
- 스프링 동작흐름 #ioc #di #dispatcherservlet
- Java
- 퍼블리싱 #앱에서 DB바로 안붙이는 이유
- git branch strategy
- 알고리즘 나머지연산
- vue 특징
- #web /was 구분이유
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |