JVM과 JAVA 메모리 영역
JVM은 Java Virtual Machine의 약자다
자바 가상 머신이라는 건데
이것 덕분에 자바는 운영체제로부터 독립적으로 구동 가능하다.
프로그램은 운영체제에게 필요한 컴퓨터 자원을 요청하는 방식이 운영체제마다 다른데
자바는 JVM을 통해서 운영체제와 소통한다.
JVM 메모리 영역의 일부
JVM의 메모리 구조는 크게
Heap, Metaspace(Method Area), Native Area, stack, pcRegisters, Native method stacks로 나뉜다.
method area - 클래스 로더가 클래스를 정의하는 데 사용함
JVM당 하나의 메서드 영역만 있으며 공유 리소스임
static 변수를 포함하여 모든 클래스 수준 정보가 저장됨
static키워드를 붙이면 자바 메모리상에서 method area(jdk8 metaspace)에 들어가기 때문에
시작할 때 메모리에 할당되고 프로그램이 종료될 때 해제됨
그래서 이거 쓰면 객체를 new로 생성하지 않고도 접근이 가능하고
모든 객체가 공유하는 메모리가 됨
여러 번 재 사용되는 멤버나 잘 변하지 않는 변수를 static으로 구현하면 좋음
GC의 영향을 받지 않기 때문에 너무 자주 쓰면 성능에 악영향 줌
스택 - 메서드가 호출되면 methodFrame이 생성됨
메서드 내부에서 사용하는 다양한 값들이 임시로 저장됨
스레드당 하나의 스택 메모리가 있음
메서드, 함수 프레임 및 개체에 대한 포인터를 포함한 스레드 별 정적 데이터가 저장됨
종료되면 JVM에 의해 삭제됨 공유 리소스가 아님
힙 - 객체의 정보가 저장되는 공간이며
JVM당 하나의 힙 영역만 있음 공유 리소스임
우리가 객체를 다루는 것은 stack영역에 저장된 참조 변수를 통해
힙 영역에 존재하는 객체를 다루는 의미임
PC 레지스터: 스레드의 현재 실행 명령의 주소를 저장함
각 스레드에는 별도의 PC 레지스터가 있음
기본 메서드 스택: 기본 메서드 정보를 저장함
모든 스레드에 대해 별도로 네이티브 스택이 있음
jdk버전마다 조금씩 다르기 때문에 깊은 이해가 필요한 작업이라면..
해당 버전에 맞는 자료를 찾아보는 게 좋다.
참고자료
https://www.geeksforgeeks.org/jvm-works-jvm-architecture/
How JVM Works - JVM Architecture? - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
Tunning
Configuring Axional Server for highload, albeit for load testing or for production, requires that the operating system, the JVM, the network and the load generation all be tuned. The following document shows the major parameters to configure on a server ma
docs.deistercloud.com