본문 바로가기

jvm4

jib 사용시 jvm 옵션을 동적으로 설정하는 방법 jib 이란? springboot 어플리케이션을 컨테이너 환경에 빌드, 배포할때 jib plugin 을 사용하면 개발 프로세스를 보다 쉽게 개선할 수 있습니다. jib 이란? https://tangoblog.tistory.com/10?category=911458 어플리케이션을 개발하다보면 환경별로 옵션을 다르게 배포해야하는 경우도 생기고, 디렉토리를 추가 생성하거나 하는 설정을 해야 할 수 있습니다. jib 을 사용하면 편리할 수 있지만, 어떤 기능들이 제공되는지 알아야 다양한 상황에 대응할 수 있을 겁니다. https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#extended-usage 문제 상황 jib 을 사용하는 상황에서.. 2021. 7. 27.
Java 분석 도구 (jps, jstat, jstack, jmap, jconsole, VisualVM, MAT) 목표 이전글들을 통해, Java가 객체를 메모리에 저장하는 방법, JVM의 구조, 가비지 컬렉터의 동작방식 등을 보았습니다. 기반 지식들은 알았는데, 실제로 JVM의 문제가 발생했을때 우리는 어떻게 분석할 수 있을까요? Memory Leak이 의심될때 우리가 사용할 수 있는 CLI, GUI 도구들은 무엇이 있는지, 어떻게 사용하면 좋을지 알아보겠습니다. 이전글 java가 메모리를 할당하는 방법 (객체 크기 계산) JVM 알아보기 GC, option, gc.log Java 관련 도구 $JAVA_HOME/bin 디렉토리로 이동해보면 다양한 CLI 도구들도 있고, 설치해서 사용할 수 있는 GUI 도구들도 있습니다. 현재 메모리 상태를 바로 보여준다던가, 스레드 덤프, 힙 덤프를 추출할 수 있는 유용하게 사용할.. 2021. 1. 25.
JVM 알아보기 GC, option, gc.log 목표 자주 쓰는 JVM option들이 어떤 의미인지, gc.log에 남는 값들은 어떻게 해석하면 되는지 알아봅니다. GC 우선 JVM에서 메모리 영역을 어떻게 관리하고 있는지 알아야 합니다. 모든 내용은 jdk8 기준으로 작성되었습니다. 출처: https://code-factory.tistory.com/48 Eden Object가 새로 생성되었을때 Eden 영역에 저장 Eden 영역이 가득차게되면 MinorGC가 발생합니다. MinorGC 발생 시에 Eden 영역에 있는 Reachable Object들은 S0 혹은 S1 영역으로 이동 Survivor 1,2 MinorGC가 발생하면 S0 영역에 있는 Reachable Object들은 S1 영역으로 이동하고, S0 영역은 비워집니다. MinorGC가 다시.. 2021. 1. 21.
java가 메모리를 할당하는 방법 (객체 크기 계산) 개요 C/C++의 sizeof() 함수가 있는 것과 달리 Java에서는 Object 크기를 정확하게 측정할 수 있는 방법이 없습니다. 메모리상에 대규모의 데이터를 Cache용도로 저장하여 최대한 성능을 향상시키고자 하는 상황 등에서는 저장하고자 하는 Object 크기를 측정해보는게 굉장히 중요합니다. 이런 요구사항 속에서 어떻게 Java의 Object 크기를 최대한 정확하게 측정할 수 있을지 알아보겠습니다. 아래부터 설명드리는 모든 내용은 JVM 아키텍처와 버전에 따라서 다를 수 있습니다. Primitive type primitive type Size 참고 공식적인 size를 가지고 있습니다. null 값이 존재하지 않습니다. wrapper class가 있습니다. primitive typye 변수는 th.. 2021. 1. 20.