본문 바로가기

Java3

JAVA 스레드 덤프와 VisualVM (1) / Thread Dump, VisualVM, Sampler/Profiler, FastThread.io 이 글은 자바로 작성된 프로그램(프로세스)에 대해서 아래의 질문에 대한 힌트를 찾기 위한 방법을 설명하고자 작성되었다. 프로그램이 잘 실행되고 있는 것인가? 왜 프로그램의 특정 기능이 응답이 없지? 왜 프로그램이 멈춰 있지? 왜 프로그램의 성능(응답)이 느리지? 왜 프로그램이 CPU를 많이 사용할까? 프로그램의 성능을 향상할 수 있는 방법이 있을까? 프로그램의 CPU 자원 사용량이 많은 코드를 찾을 수 있을까? 자바의 스레드와 관련된 이슈를 해결하거나 모니터링을 위해서는 자바 스레드의 동작 방식을 이해하고 다양한 분석 툴을 손쉽게 다룰 줄 알아야 한다. 스레드 모니터링을 위해서 알아야 할 스레드의 기본적인 개념들과 모니터링 툴을 사용하여 분석하는 방법에 대해서 공유하고자 한다. 자바 기본 스레드의 종류와.. 2020. 6. 17.
JDBC DatabaseMetadata 기반 정보 조회 / 스키마, 테이블, 컬럼, PK, Index / 오라클, MySQL, PostgreSQL, SQL Server, ... Oracle, MySQL, PostgreSQL, SQL Server, Sybase IQ, SAP HANA 등의 DBMS 종류는 우리가 인지하고 있는 것보다 모르는 것이 더 많을 것이다. 이러한 데이터베이스에서 스키마 목록, 테이블 목록, 테이블의 컬럼 목록, 테이블의 Primary Key, 테이블의 인덱스, Foreign Key 등의 데이터를 조회하기 위해서 어떻게 해야 할까?? 가장 먼저 떠오르는 방법은 해당 데이터베이스에 SQL 쿼리를 작성하여 각각의 딕셔너리 테이블(혹은 뷰)을 조회하는 방법일 것이다. SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='T1' 이렇게 SQL 쿼리를 기반으로 작성된 코드는 다른 데이터베이스와는 호환이 되지 않으며(데이터베이스마다 조회.. 2020. 6. 15.
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.