전체 글 (8) 썸네일형 리스트형 [자바] VisualVM 으로 Heap Dump 들여다보기 Heap Dump 를 생성하고 보기 위해 VisualVM 을 사용하는 과정을 정리한 글입니다. Object 의 생성과 Garbage Collection(GC) 으로 인해 heap 에서 Object 가 제거되는 것을 VisualVM 을 통해 눈으로 확인해보겠습니다. VisualVM 은 다양한 기능을 제공하지만 이 글에서는 Heap Dump 에 초점을 맞추었습니다. 그리고 macOS 기준으로 작성한 글이라 다른 OS환경과는 다르게 보일 수 있습니다. 1. 설치 및 실행 VisualVM홈페이지 에서 자신의 OS환경에 맞는 설치파일로 VisualVM 을 설치하실 수 있습니다. 처음 실행하면 아래 그림처럼 현재 자신의 로컬 환경에 실행 중인 JVM 어플리케이션들을 볼 수 있습니다. 이 어플리케이션들 중 하나를 예.. 자바 HashMap의 capacity 는 왜 항상 2의 n승일까? HashMap 의 코드를 보면 capacity 의 초기값, 최댓값은 power of two( 2n ) 가 되어야 하고, resize 메소드 또한 power of two( 2n ) 의 값을 리턴한다고 적혀있습니다. openjdk11 코드를 사용하였습니다. // HashMap.java 코드 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 > 16) & 25 -1 65,537 0000 0000 0000 0001 0000 0000 0000 0001 1 0 131,073 0000 0000 0000 0010 0000 0000 0000 0001 1 3 262,145 00.. 자바 ArrayList 의 default size 는 10 맞을까? 언제부터인가 ArrayList 를 기본 생성자로 생성했을 때 default size 는 10으로 외우고 있었습니다. 혹여나 하는 마음에 코드를 가볍게 들여다봤는데 생각과는 달랐습니다. ArrayList 는 아래와 같이 동작하고 있었습니다. 1. 미리 만들어진 (static) 빈 배열로 초기화 2. 값을 한개라도 추가하면 default size 인 10 길이의 배열 할당 코드를 보면서 어떻게 구현이 되어있는지 확인해 보겠습니다. openjdk11 을 사용하였습니다. 기본 생성자를 사용했을 때 this.elementData 는 ArrayList 에서 데이터를 저장하는 1차원 배열의 변수입니다. ArrayList 의 기본 생성자를 따라가 보면 위와 같은 상수로 초기화되는 것을 볼 수 있습니다. 저 상수의 값을.. 이전 1 2 3 다음 목록 더보기