본문 바로가기

Java6

JAVA 스레드 덤프와 VisualVM (1) / Thread Dump, VisualVM, Sampler/Profiler, FastThread.io 이 글은 자바로 작성된 프로그램(프로세스)에 대해서 아래의 질문에 대한 힌트를 찾기 위한 방법을 설명하고자 작성되었다. 프로그램이 잘 실행되고 있는 것인가? 왜 프로그램의 특정 기능이 응답이 없지? 왜 프로그램이 멈춰 있지? 왜 프로그램의 성능(응답)이 느리지? 왜 프로그램이 CPU를 많이 사용할까? 프로그램의 성능을 향상할 수 있는 방법이 있을까? 프로그램의 CPU 자원 사용량이 많은 코드를 찾을 수 있을까? 자바의 스레드와 관련된 이슈를 해결하거나 모니터링을 위해서는 자바 스레드의 동작 방식을 이해하고 다양한 분석 툴을 손쉽게 다룰 줄 알아야 한다. 스레드 모니터링을 위해서 알아야 할 스레드의 기본적인 개념들과 모니터링 툴을 사용하여 분석하는 방법에 대해서 공유하고자 한다. 자바 기본 스레드의 종류와.. 2020. 6. 17.
Volatile 변수에 대한 이해 (feat. 싱글톤) Volatile 변수가 무엇인지, 언제 사용하는지에 대해서 공유하고자 합니다. Volatile 변수란? Volatile로 선언된 변수는 메인 메모리에서 CPU의 캐시에 적재되지 않는 변수를 의미하며, 주로 여러 스레드가 동시에 접근할 수 있는 변수를 Volatile로 선언합니다. Volatile 변수의 특징은 아래와 같습니다. - Volatile 변수는 CPU의 Cache를 거치지 않고 메인 메모리에 직접 Read/Write를 수행합니다. - Volatile 변수에 대한 접근(Read/Write)은 Synchronized를 사용하는 것과 동일하게 동작합니다. - Primitive 타입과 Object 타입(Null 허용) 모두 사용 가능합니다. Java 5 이후 부터는, 한가지 특징이 더 추가 되었습니다... 2018. 4. 17.