public class Main{
public static void main(String[] args) {
int a;
m1();
}
public static void m1() {
int b;
doublc q;
m2();
}
public static void m2() {
int c;
boolean z;
}
}


public class Main{
public static void main(String[] args) {
int a;
m1();
}
public static void m1() {
int b;
doublc q;
m2();
}
public static void m2() {
int c;
boolean z;
m3();
}
public static void m3() {
String str = "크리스입니다.";
str += "반가워요";
}
}



위와 같이 Heap에서 String : "크리스입니다"는 unreachable object(어떤 변수도 reference 하고 있지 않는 객체)이다.
참조되지 않은 Data가 Heap에 존재하기 때문에 메모리 누수가 발생한다. 이때 JVM의 GC가 동작하여 unreachable object를 제거한다.

