새로운 가비지 컬렉터를 HotSpot에 추가한다고 가정해 보자. 공통 인터페이스를 구현하고 등록하면 끝날 것 같지만, 과거의 HotSpot에서는 그렇지 않았다. CollectedHeap 구현 객체를 생성하는 코드가 구체적인 Collector를 직접 선택했고, 모니터링 코드와 컴파일러에도 Collector별 지식이 흩어져 있었다.흥미로운 점은 당시에도 이미 CollectedHeap이라는 추상 클래스가 있었다는 사실이다. 인터페이스는 있었지만 관심사는 충분히 분리되지 않은 상태였다.JEP 304는 이 문제를 다룬다. 이 글에서는 새로운 인터페이스의 메서드를 나열하기보다 다음 두 가지에 집중한다.공통 타입이 있는데도 왜 관심사의 분리에 실패했는가구체 구현을 고르는 조건문을 없애지 않고도 어떻게 구조를 개선했는..