본문 바로가기
728x90
반응형

📙21

[JVM 파헤치기] 02. 자바 메모리 영역과 메모리 오버플로(2) 핫스팟 가상 머신에서의 객체객체 생성자바는 객체 지향 프로그래밍 언어로 자바 프로그램이 동작하는 동안 수시로 객체가 만들어짐언어 수준에서의 객체 생성은 보통 new 키워드를 쓰면 끝나지만 가상 머신 수준에서의 객체 생성 과정 new 명령에 해당하는 바이트코드를 만나면 이 명령의 매개 변수가 상수 풀 안의 클래스를 가리키는 심벌 참조인지 확인심벌 참조가 뜻하는 클래스가 로딩, 해석(reslove), 초기화(initialize) 되었는지 확인(준비되지 않은 클래스라면 로딩부터 해야 함)로딩이 완료된 클래스라면 새 객체를 담을 메모리 할당객체에 필요한 메모리 크기는 클래스를 로딩하고 나면 완벽하게 알 수 있음객체용 메모리 공간 할당은 자바 힙에서 특정 크기의 메모리 블록을 잘라 주는 일이라 할 수 있음메모리 .. 2025. 3. 24.
[JVM 파헤치기] 02. 자바 메모리 영역과 메모리 오버플로(1) 자바 개발자는 가상 머신이 제공하는 자동 메모리 관리 메커니즘 덕에 메모리 할당과 해제를 코딩하지 않아도 메모리 누수나 오버플로 문제를 거의 겪지 않음하지만 통제권을 위임했기 때문에 문제가 한 번 터지면 가상 머신의 메모리 관리 방식을 이해하지 못하는 한 해결하기가 상당히 어려움런타임 데이터 영역자바 가상 머신은 자바 프로그램을 실행하는 동안 메모리를 몇 개의 데이터 영역으로 나누어 관리하며 영역별로 목적과 생성/삭제 시점이 있음프로그램 카운터PC 레지스터는 작은 메모리 영역이지만, JVM의 멀티스레딩 구현과 프로그램 실행 흐름 제어에 핵심적인 역할을 함작은 메모리 영역으로 현재 실행 중인 스레드의 바이트 코드 줄 번호를 가르키는 표시기각 스레드마다 별도의 스택 보유(스레드 프라이빗 메모리)스레드와 동일.. 2025. 3. 23.
[JVM 파헤치기] 01.자바 기술 시스템 소개(2) 자바 가상 머신 제품군썬 클래식 VM세계 최초의 상용 자바 가상 머신자바 코드를 순전히 인터프리터 방식으로 실행JIT 컴파일러를 사용하려면 플러그인을 추가하면 됐는데 플러그인 하는 순간 인터프리터는 더 이상 동작하지 않고 가상 머신의 실행 시스템 전체가 JIT 컴파일러에 넘어가는 구조였음당시 인터프리터와 컴파일러는 함께 구동되지 않았기 때문에 컴파일러를 사용하기 시작하면 실행 빈도 등 컴파일에 따른 득실과 상관없이 코드 전체를 컴파일해야 해서 자칫하면 프로그램 응답 속도가 너무 느려져 오래 걸리는 최적화 기법은 적용할 수 없었음JDK 1.2가 출시되기 전까지 JDK와 함께 배포된 유일한 가상머신. 핫스팟 VM과 공존했던 JDK 1.2에서도 기본은 클래식 VM이었음 이그잭트 VM핫스팟 검출, 2단계 JIT.. 2025. 3. 18.
728x90
반응형