Java static과 클래스 로드 및 초기화
2022. 8. 28. 23:35
Java
서론 이번에 GOF 디자인 패턴을 공부하면서 기선님 강의를 봤는데 챕터1인 싱글톤 패턴 부터 막혔다. static을 몰랐기 떄문이다. 그래서 이번 기회에 조금 더 정리할 수 있는 기회가 되었다. 예전에도 헷갈렸던 것 같다. 이번 기회에 조금 더 알아가는 기회가 될 것 같다. 내가 이해한 static은 공유 자원 + 클래스 로드 시 같이 메모리에 올라가는 것이었다. 예전에도 공유라는 것에 현혹 되었던 적이 있는데 다시 초기화가 된 것 같다. 조금 더 알아 보자. 싱글톤 구현하기 강의에서 싱글톤 구현하는 방법을 몇 가지 배웠다. 기존에 알고 있는 방식은 잠재된 버그가 있다는 것을 알게 되었다. 코드를 살펴 보자. 멀티 쓰레드 환경에서 안전하지 않는 코드 public class Settings { privat..
JVM 동작 원리
2021. 10. 11. 14:49
Java
JVM이란 무엇인가? JVM(Java Virture Machine) 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 실행할 수 있는 공간이다. 가상 머신이므로 어떤 OS에서도 독립적으로 실행이 가능하다. 핵심은 JVM은 OS 위에서 동작하게 되며, 자바 코드를 컴파일한 바이트 코드를 운영 체제가 이해할 수 있는 기계어로 변환하여 코드를 실행 시킨다. JVM 구성요소 1. ClassLoader 바이트 코드를 JVM이 운영 체제로 부터 할당받은 메모리 영역인 Runtime Data Area로 적재하는 역할 메모리를 할당 받았기 때문에 당연히 애플리케이션을 실행하면 수행된다. .java 파일을 javac.exe가 컴파일한 .class(바이트 코드)가 적재된다. 적재되는 시점은 Runtime시 적재된..