Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- mac
- ORM
- 스냅잘찍음
- LINQ
- error
- Config
- c#
- React
- 상속
- intellij
- 명시적외래키
- ViewModel
- .net
- minimalAPI
- Request
- 코드프로그래머스
- Store
- 대전본식영상
- 라도무스dvd
- c#코딩의기술실전편
- lazy loading
- scanner
- dbContext
- vscode
- JavaScript
- 에스가든스냅
- extjs
- JSON
- extraParams
- EFCore
Archives
- Today
- Total
ejyoo's 개발 노트
JVM 과 변수종류(인스턴스변수, 클래스 변수, 지역변수) 와 메서드 본문
Java.exe가 실행되면 (.class 실행)
자바 가상 머신(Java Virtual Machine, JVM)은 프로그램 수행에 필요한 메모리를 할당 받고, 이 메모리를 관리하게 된다.
Java에서 변수는 크게 전역변수, 지역변수로 구분되며
전역변수는 클래스 변수, 인스턴스 변수로 세분화된다.
변수의 종류를 결정짓는 요소는 변수가 어느 위치에 선언됐느냐에 따라 변하게된다.
변수의 종류 | 선언 위치 | 생성 시기 | 특징 | |
전역변수 =멤버변수 =필드 |
클래스 변수 (=Static변수) |
클래스 영역 | 클래스가 메모리에 올라갈 때 | - static 메모리에 생성 - 프로그램 실행시 생성, 종료시 소멸 - 변수의 초기화 지원(초기화 필요 없음) |
인스턴스 변수 (=객체변수) |
인스턴스가 생성되었을 때 | - heap 메모리에 생성 - GC에 의해 메모리 소멸 |
||
지역변수 | 클래스영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) |
메소드 블럭 안에서 변수 선언문이 수행되었을때 |
- 메서드 수행시 메모리에 생성 - stack 메모리에 생성 - 초기화가 안되므로 초기화 후 사용가능 - 메소드 종료시 메모리에서 소멸 |
class Test {
int AAA; // 인스턴스 변수
static inst BBB; // 클래스 변수(또는 static 변수, 공유 변수)
void method(){
int CCC=0; // 지역변수
} // 메서드 영역
} // 메소드 포함 전체가 클래스 영역
메소드 영역 (Method area)
프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일 (.class) 파일을 읽어 클래스에 대한 정보를 저장한다. Class Variable도 함께 저장하는데 그것은 Static Variable과 같다. 어디서든 공유해 쓸 수 있는 변수를 의미한다.
호출 스택 (call stack)
메서드의 작업에 필요한 메모리 공간을 할당한다. 메서드가 호출되면 스택에 호출된 메서드를 위한 메모리가 할당되고, 이 메모리는 메서드의 연산의 중간 결과, 지역변수, 매개변수 등을 저장하는데 사용한다. 그리고 메서드의 작업을 마치면 메모리 공간을 반환한다.
힙 영역 (heap)
클래스의 인스턴스와 배열이 저장되는 공간이다. 프로그램 중 생성된 인스턴스는 모두 이곳에 저장된다. 인스턴스 변수도 생성된다.
'BackEnd > JSP_Servlet' 카테고리의 다른 글
Error Page 설정 방법 (0) | 2021.06.04 |
---|---|
JSP&Servlet -> web.xml 의 load-on-startup 기능 (0) | 2021.06.02 |
톰캣 서버에 프로젝트 목록이 뜨지 않을 때. (0) | 2021.05.29 |
Tomcat 배포기준 ROOT (0) | 2021.05.28 |
File.separator (0) | 2021.05.27 |