Java

    [자바 최적화] 가비지 수집 고급

    [자바 최적화] 가비지 수집 고급

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 트레이드오프와 탈착형 수집기 ✅ GC의 트레이드오프 개발자는 가비지 수집기 선정 시 다음 항목을 충분히 고민해야 한다. 중단 시간 처리율 중단 빈도 회수 효율 중단 일관성 -> 애플리케이션의 특징에 따라 이러한 트레이드오프와 관심사를 면밀히 검토해야 한다. -> 또한, GC는 탈착형 서브시스템으로 취급되기 때문에, 각 JVM 구현체와 애플리케이션의 특징에 따..

    [자바 최적화] 가비지 수집 기초

    [자바 최적화] 가비지 수집 기초

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 마크 앤 스위프 ✅ 마크 앤 스위프: GC의 기본 알고리즘 할당 리스트를 순회하면서 마크 비트(mark bit)를 지운다. 할당 리스트: 할당됐지만, 아직 회수되지 않은 객체 리스트 마크 비트: 객체가 실제로 사용 중인지 표시 GC 루트부터 살아 있는 객체를 찾는다. 이렇게 찾은 객체마다 마크 비트를 세팅한다. 할당 리스트를 순회하면서 마크 비트가 세팅되지 ..

    [자바 최적화] 마이크로벤치마킹과 통계

    [자바 최적화] 마이크로벤치마킹과 통계

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 자바 성능 측정 기초 ✅ 자바 벤치마크는 어려워 우리의 목표는 벤치마크로 공정한 테스트를 하는 것 -> 가급적 시스템의 어느 한 곳만 변경하고 다른 외부 요인은 벤치마크 안에 두고 통제하고자 함 그러나 자바 코드 실행은 JIT 컴파일러, 메모리 관리, 그 밖의 서브 시스템과 완전히 떼어넣고 생각할 수 없다. -> 이처럼 자바 런타임시의 변동 요인을 고려하며 ..

    [자바 최적화] 성능 테스트 패턴 및 안티패턴

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 성능 테스트 유형 ✅ 성능 테스트를 기획하는 요령 모든 성능테스트는 그 목표가 명확해야 한다. -> 테스트로 확인하고 싶은 정량적 질문 리스트와, 그 테스트가 대상 애플리케이션 입장에서 중요한 이유를 생각해보자. 지연 테스트 ✅ Latency test: 종단 트랜잭션에 걸리는 시간은? 가장 일반적인 성능 테스트다. -> '고객이 트랜잭션을 얼마나 오래 참고 ..

    [자바 최적화] 하드웨어와 운영체제

    [자바 최적화] 하드웨어와 운영체제

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 최신 하드웨어 소개 ✅ 최신 하드웨어 지식 1990년대 이후, 애플리케이션 개발자 세상은 대부분 인텔 x86/x64 아키텍처 위주로 돌아갔다. 이 장에서는 이를 포함해 그간 발전된 여러 가지 CPU 기술들을 알아볼 것이다. 메모리 ✅ CPU와 메모리의 갭 CPU를 구성하는 트랜지스터는 처음에 클록 속도(clock speed)를 높이는데 쓰였다. 하지만, 클록..

    [자바 최적화] JVM이야기

    [자바 최적화] JVM이야기

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 인터프리팅과 클래스로딩 ✅ 인터프리팅 JVM은 스택 기반의 해석 머신이다. -> 어떤 메서드의 호출 스택, 혹은 일부 결과를 스택에 보관하며, 이 스택의 맨 위에 쌓인 값들을 가져와 계산한다. -> 인터프리터는 스택의 위에서부터 옵코드(명령)를 하나씩 순서대로 처리하는 'while 루프 안의 switch문'이다. ✅ 클래스로딩 JVM이 클래스 파일을 실행하기..

    [자바 최적화] 성능과 최적화

    [자바 최적화] 성능과 최적화

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 자바 성능: 잘못된 방법 ✅ 잘못된 조언 한동안 구글에서 'Java Performance Tuning'이라 검색하면 97 ~ 98년에 작성된 글 3개가 상위권을 차지했다. 그러나, 이들은 지금은 더 이상 안 맞는, 심지어 애플리케이션에 악영향을 끼칠 만한 내용으로 가득 차 있다. ex) 자바 초창기에 메서드 디스패치(어떤 메소드를 호출할 것인가를 결정하는 과..

    [Java] 등가속도 운동 - t초 후의 위치 계산

    [Java] 등가속도 운동 - t초 후의 위치 계산

    등가속도 운동에서 방향, 속도, 가속도가 주어질 때, t초 후의 위치 계산하는 코드이다. 물리학이긴 하지만,, 테스트할 일이 있어서 코드로 구현해 보았다. 코드는 유클리드 기하학 기준이다. (좌표평면) // 초기 위치(x, y), 방향(direction), 속도(velocity), 가속도(acceleration)이 주어졌을 때 // t초 후의 위치(x_prime, y_prime)을 계산 double space = velocity * time + 0.5 * acceleration * Math.pow(time, 2); double x_prime = x + space * Math.cos(direction); double y_prime = y + space * Math.sin(direction); 참고삼아 그림..