전체보기(316)
-
JVM 의 실행, 종료, 클래스 로더, 아키텍쳐
JVM 실행 절차 Java 실행 옵션을 파싱한다. 힙크기를 할당한다. JIT 컴파일러 타입을 지정한다. 환경변수를 지정한다. (CLASSPATH, LD_LIBRARY_PATH) Main 클래스를 확인한다. HotSpot VM 을 생성한다. JNI_CreateJavaVM 가 HotSpot VM을 생성된다. JNI_CreateJavaVM 는 동시 호출이 불가능하다. JNI_CreateJavaVM 가 non_primordial 스레드에서 HotSpot VM을 생성한다. JNI 호환성을 점검한다. GC 준비를 한다. 각종 초기화를 한다. OS 모듈을 초기화한다. (Pid, 랜덤 시드) 커맨드 라인 변수를 파싱한다. 표준 자바 시스템 속성을 초기화된다. 동기화, 메모리같은 모듈이 초기화된다. libjava 같은 ..
2020.04.23 -
JIT 컴파일러
HotSpot VM 자바를 만든 Sun 에서는 자바의 성능 개선을 하던 도중 JIT 컴파일러를 개발한다. 그리고 이 이름을 HotSpot 이라고 짓는다. JIT 컴파일러는 아래에서 설명하겠지만, JVM 환경에서는 javac 가 컴파일한 바이트 코드를 읽고 실행하는 인터프리터가 존재한다. 이 때 인터프리터가 자주 수행되는 영역이 있다 하면 이를 hot code 영역이라고 부른다. JIT 컴파일러는 hot code 영역을 효율적으로 다루기 위해 만들어진 기능이다. 이렇게 HotSpot(JIT 컴파일러)이 탑재된 VM 은 자바 3 부터 기본 VM 으로 사용되어 왔다. HotSpot VM 에는 주요 3가지 컴포넌트가 존재한다. JIT 컴파일러 VM 런타임 메모리 관리자 번외) HotSpot VM 에는 OSR 컴..
2020.04.22 -
자바 성능 튜닝 이야기 - 01
안드로이드의 DalvikVM 안드로이드는 오라클, IBM 이 개발한 JVM 을 사용하지 않고 Dalvik VM 을 사용한다. 즉 가상 머신이 다르기 때문에 Dalvik VM 의 특징을 이해해야한다. 물리적인 RAM 이 부족할 경우 디스크를 메모리 처럼 사용할 수 있는 SWAP 을 제공하지 않는다. 구글에서 말하는 안드로이드의 성능 개선 필요없는 객체 생성을 피하라 인스턴스 변수를 접근할 일이 없으면 Static 메소드를 사용하라. 인스턴스 변수를 접근할 일이 생기면 getter/setter 를 사용하여 접근하지마라 상수는 static final 로 지정하면 접근 속도가 빨라진다. For-each 문을 써라. 단 ArrayList 는 전통적인 for 문이 더 빠르다. Private inner 클래스의 pr..
2020.04.22 -
자바 성능 튜닝 이야기 - 00
해당 책을 정리합니다. http://www.yes24.com/Product/Goods/11261731 개발자가 반드시 알아야 할 자바 성능 튜닝 이야기 자바 애플리케이션 개발 가이드. 고성능 애플리케이션을 위해 고려해야 할 복잡한 요소와 성능 개선 방법을 쉽게 이해할 수 있도록 이야기 형식으로 풀어 나가면서, 개발 초기 단계부터 성능을 위해 고려해야 할 점을 하나하나 짚어 준다. 장애를 일으키는 반복적인 코딩 이슈부터 시스템 진단, 튜닝 방법에 이르기까지 성능 개선에 필요한 핵심 정보를 정리했다. 또한 저... www.yes24.com JMH OpenJDK에서 개발한 자바의 성능 테스트용 라이브러리 package org.openjdk.jmh.samples; import org.openjdk.jmh.ann..
2020.04.20 -
소프트웨어 장인
http://www.yes24.com/Product/Goods/20461940 소프트웨어 장인 더 나은 개발자가 되어, 더 좋은 코드를 전달하고 싶은 당신을 위하여...이 책에서 풀어낸 소프트웨어 장인정신의 프로페셔널리즘, 기술적 탁월함, 고객 만족은 애자일, 린(lean) 원칙들과 시너지를 일으켜 소프트웨어 업계를 한 단계 도약시킬 수 있다. 또한 프로젝트와 개발자를 공장 운영과 생산 라인 노동자로 보는 관점을 바꾸는데 기여할 것이다. 그리... www.yes24.com 저자의 자서전에 가까운 책이다. 소프트웨어 장인이란 무엇인가부터 시작해서, 왜 개발자가 소프트웨어 장인이 되어야 하는지 설명하고 있다. 소프트웨어 개발자라면 가져야할 프로페셔널리즘에대해서 말하고 있다. 프로는 코드 품질을 생각하고 클라..
2020.04.17 -
카프카 - 05 - 스트림즈, KSQL
카프카 스트림즈 API 스트림 프로세심은 실시간 분석이라고도 불린다. 스트림 프로세싱과 대비되는 개념은 배치처리, 정적 데이터 처리를 들 수 있다. 스트림 처리를 하다보면 이전 스트을 처리한 결과를 참조해야하는 경우가 있는데 이를 상태 기반 처리라고 한다. 반면 이전 스트림의 처리 결과와 관계 없이 현재 어플리케이션에 도달한 스트림만을 기준으로 처리하는 것을 무상태 기반 처리라고 한다. 카프카 스트림즈는 스파크 스트림이나 스톰과 같이 스트림 처리를 하는 프로세서들이 있다. 카프카 스트림즈 API 는 이런 프로세서들이 연결되는 형상(토폴로지)을 만들어 처리하는 API이다. 카프카 스트림즈 용어 정리 스트림 : 카프카 API 를 사용해 생성된 토폴로지, 끊임없이 전달되는 데이터 세, key-value 형태이..
2020.04.14