본문 바로가기

주제별로 살펴보기47

자바에서의 객체 관리 2: 각종 변수들의 생성과 사용 클래스정보의 등록 Java Heap은 JVM이 관리하는 메모리, native memory는 운영체제에서 관리하는 메모리이다. 이 메모리에는 처음 프로그램이 실행될 때 클래스 정보들이 올라가게 된다. 소스 코드, 클래스 파일 자체는 정적이다. HDD나 SSD의 경우 RAM보다 속도가 느리기때문에 매번 보조기억장치에서 이를 읽어들이는 것은 성능을 저하시킨다. 따라서 클래스 정보는 처음 사용될 때 메모리에 그 정보를 올리고 필요할 때마다 가져오는 것이다. → 이미 클래스에 대한 정보를 PERM 혹은 Metaspace에 올려두고, 객체가 생성될 때마다 사용하는 것이다. Static 정보의 생성 Java 7까지는 non-heap영역, 8 이상부터는 heap에 저장한다. 클래스가 로딩될 때 한 번 메모리에 올라가 .. 2023. 11. 27.
Main 메서드보다 먼저 실행되는 static 블록 | 토막글 static block은 static 변수에 대한 초기화를 진행할 수 있다: public class hello { static int a; static { a = 500; System.out.println(a); } public static void main(String[] args) { System.out.println("Hello"); } } 클래스 필드와 클래스 메서드는 실행이 가능하도록 올라가고, static 블록의 코드가 실행되어 그 값을 초기화한다. 그 다음 JVM은 메인 메서드를 찾아 실행한다: static하므로 객체를 생성하지 않고도 실행할 수 있다. 따라서: a값을 출력 후, "Hello" 2023. 11. 27.
Static 메서드에서 인스턴스 필드를 사용할 수 없는 이유는? | 토막글 클래스 메서드(static method)가 실행되는 시점에는 인스턴스 필드가 메모리에 없으므로 사용할 수 없다 → 컴파일 오류 static 메서드 / static 필드 = 클래스 메서드 / 클래스 필드 비 static 메서드 / 비 static 필드 = 인스턴스 메서드 / 인스턴스 필드 2023. 11. 24.
자바 파일의 실행과정 - 초급 이번에는 자바 프로그램의 실행에 대한 전체적인 개념만 잡고 넘어가는 것으로 하고, JVM에 대해서는 참고자료의 아티클을 통해 조금 더 자세하게 정리해보도록 하자. 1. .java 파일의 컴파일: .class 파일 javac vendingMachine.java javac vendingMachineMain.java → vendingMachine.java, vendingMachine.class / vendingMachineMain.java, vendingMachineMain.class 파일 생성 Class 파일은 바이트코드로 이루어져 있으며, 바이트코드는 플랫폼 독립적이므로, 플랫폼에 관계없이 일정하게 번역된다. 바이트코드는 바이너리 코드로 되어있지만, 소프트웨어 단에서 해석이 가능하므로 기계어보다는 추상화되.. 2023. 11. 24.
클래스 설계와 UML | 토막글 클래스의 설계 → 인자와 반환값을 포함한 메서드와 필드를 명시한다. 이 때, UML 표기법을 자주 사용한다: web programming, Spring, design pattern 등을 공부할 때 클래스간의 관계를 작성하기 위해 주로 사용하기 때문에 익숙해지는 게 좋다. 공부할 때 뿐만 아니라, 개발은 설계을 통해 구상한 후 코드를 작성만 한다. 2023. 11. 23.
Expression vs. Statement 표현식 Expression 값이거나 값을 반환하는 코드 조각. 변수, 연산자, 리터럴, 메서드 호출로 구성된다. int score; score = 90; 에서, score = 90은 int를 반환하는 표현식이다. 또 다른 예로, # 1 Double a = 2.2, b = 3.4, result; result = a + b - 3.4; # 2 number1 == number2; # 3 "Number1 is bigger than Number2"; #1. a+b-3.4은 표현식이고 #2. 은 boolean을 반환하는 표현식, #3. 은 문자열 표현식이다. 문장 Statement 작업을 수행하도록 설계된 표현식과 문장의 집합(complete unit of execution). 표현식에 세미콜론(;)을 추가함으로써.. 2023. 11. 23.