내부를 static으로 만드는 이유?static은 메서드 필드는 인스턴스없이 바로 참조가 가능하다static클래스 자체는 메서드영역에 올라가는게 맞으나 실제로 사용하기 위해서 인스턴스를 생성해야 한다.그리고 static은 본질적으로 외부참조를 하지 않는다.일반클래스일때 inner를 바로 생성할 수 없고 outer를 거쳐서 inner를 생성하게 된다.static으로 내부 클래스를 만들면 Outer 인스턴스 없이 바로 생성할 수 있다.만약 ourer가 사용중이 아닐경우에 gc는 자동적으로 메모리에서 제거를 하려고 한다.GC는 참조되지 않는 객체만 수거한다.하지만 non-static 내부 클래스는 내부적으로 Outer를 참조하고 있으므로,Inner 인스턴스가 살아 있는 동안 Outer 인스턴스도 함께 메모리에..