Integer 128 != Integer 128 ??앞서 String Pool에서 문자열의 동일비교에 대해 공부해보았는데,이번엔 흥미로운 숫자에 대해서도 동일비교가 문제가 되는 상황이 있다. Integer a1 = 1;Integer a2 = 1;Integer a3 = 128;Integer a4 = 128;Integer a5 = 256;Integer a6 = 256;System.out.println(a1 == a2); //trueSystem.out.println(a3 == a4); //falseSystem.out.println(a5 == a6); //false 왜 이러한 상황이 나오는 것일까? 아시다시피 Integer Class는 Object객체이다. 기본형타입과는 다른 비교가 필요하다.그렇다면 a1,a2..
Garbage Collection (가비지 컬렉션) 이란?Java에서 Heap메모리영역에서 자동으로 더 이상 참조(사용)되지 않는 인스턴스(메모리 영역)들을 관리 및 청소해주고 메모리 파편화를 줄여주는 JVM 프로세스의 일부분입니다.(PS. C와 같은 일부 언어에서는 이 작업을 수동으로 관리해주어야합니다.) 어떠한 원리로 작동하는가?작동 원리는 간단합니다.1. 인스턴스 생성시 메모리를 할당합니다. (힙)2. 사용되는 메모리 영역과 사용되지 않는 메모리 영역을 식별합니다.3. 사용되지 않는 메모리를 회수하여 운영체제에 다시 전달합니다. 왜 기존 GC는 Young영역 과 Old 영역을 나누었을까? (Z GC 제외) 위는 객체 수명에 대한 분포도에 대한 그림입니다.시간이 오래될 수록 살아있는 객체들이 짧은..