constant pool (4) 썸네일형 리스트형 [Java] 인스턴스 메서드 호출 및 실행 과정 - Bytecode 실행과 Runtime Data Area의 변화 (3) 2. Instance 생성과 Constructor 호출 및 실행 과정 내용에 이어서 인스턴스 메서드(Instance Method) 호출 및 실행 과정을 다룰것이다. [Java] 2. Instance 생성과 Constructor 호출 및 실행 과정 - Bytecode 실행과 Runtime Data Area의 변화앞선, 1. 클래스 파일(.class)의 메모리 로드 과정 내용에 이어서 인스턴스(Instance) 생성과 생성자(Constructor) 호출 및 실행 과정을 다룰것이다. 생성자에 대한 내용은 Constructor에 설명되어있다. [Java]devjohnpark.tistory.com 인스턴스 참조 값과 인자 값 로드인스턴스 참조 값 로드이전에 invokespecial #9 명령어를 실행하여, 생성자.. [Java] 클래스 파일의 메모리 로드 과정 - Bytecode 실행과 Runtime Data Area의 변화 (1) OverviewJava 프로그램이 실행되면서 JVM의 메모리 구조는 어떻게 변화할까 궁금하였다. 해당 과정을 이해하기 위해, 바이트 코드를 명령어와 JVM의 Runtime Data Area와 맵핑시키면서 분석하였다. 또한 클래스 파일(.class)에는 어떤 데이터가 저장되어 있고, 메서드 영역에 로드된 이후에는 어떻게 변화되는지도 파악할 수 있었다.사람이 읽을 수 있는 형태의 바이트 코드로 변환Java Source Code아래는 Main 클래스의 main 메서드에서 AddExample 인스턴스를 생성하고 add메서드를 호출하여 반환값을 받는 코드이다. 바이트 코드 분석을 위해서 간단한 코드로 진행하였다.public class Main { public static void main(String[].. [Java] Java 소스코드 Compile, Hex Dump, Disassemble 컴파일 (Compile)javac [source_code_name].java 명령어를 실행 시켜, 아래의 자바 소스 코드를 바이트 코드로 컴파일하였다..public class ByteCode { public static void main(String[] args) { int x = 5; int y = 32768; int z = x + y; } } 컴파일한 클래스 파일(.class)을 vim 텍스트 편집기로 열어보면, 다음과 같이 사람이 읽기 어려운 바이너리 형태로 저장되어있다.Êþº¾^@^@^@B^@^\^@^B^@^C^G^@^D^L^@^E^@^F^A^@^Pjava/lang/Object^A^@^F^A^@^C()V^C^@^@^@ ^@ .. [Java] 정수 고정값의 컴파일 최적화 정수(문자도 정수)의 상수(constant)와 리터럴(literal)은 상수 풀(constant pool)에 저장 되지 않고, 명령어의 수행할 연산인 opcode에 포함될수있다. 자바 컴파일러(javac)가 정수의 상수나 리터럴의 크기와 사용 빈도수를 고려하여, 값의 크기가 작고 사용 빈도수가 낮은 바이트 코드에서 명령어의 opcode에 직접 정의된다. 이로써 컴파일러의 최적화에 의하여 메모리에 접근하여 값을 가져오지 않아 보다 빠른 연산 처리를 수행할 수 있다. 다음은 어떻게 컴파일러가 최적화 했는지 확인해보기위해서 소스코드를 작성하고, 바이트 코드로 컴파일하여 확인해볼려고 한다.public class ByteCode { public static void main(String[] args) {.. 이전 1 다음