2010-02-18 5 views
0

일부 기능을 제공하는 핵심 JAR을 가지고 있으므로 다른 많은 응용 프로그램 (데스크탑 응용 프로그램, 웹 응용 프로그램 등)에도 사용됩니다. 이제이 핵심 JAR은 계산적으로 객체를 포함하는 객체 풀을 유지 관리합니다 비싸다. 개체 풀은 고정 크기이므로 한 번에 모든 개체를 만들고 풀을 채 웁니다. 내가 원하는 것은 내 JAR을 사용하는 응용 프로그램이로드 될 때마다 응용 프로그램이 그러한 풀의 세부 사항을 알지 못하는 채로 객체 풀이 생성된다는 것입니다. 또한 앱로드 시간이 풀 인구로 인해 큰 타격을 입을지라도 앱이이 단계를 지나면 무거운 물체를 나중에 만들 때 더 이상 성능이 떨어지지 않아야합니다.JAR로드에 객체 풀 채우기

이 방법이 있습니까?

답변

4

클라이언트 응용 프로그램에서 명시 적 후크를 추가하지 않고 시작 논리를 호출하는 유일한 방법은 정적 초기화 프로그램을 클래스에 추가하여 풀을 구성하는 것입니다.

static initializer는 (클래스가 호출되기 전에) JVM에 의해 클래스가 처음로드 될 때 실행됩니다. 이는 결정적이지는 않지만 대개 클래스를 참조하는 코드 경로가 처음 공격 될 때 실행됩니다.

클라이언트 응용 프로그램을 호출하는 시작 논리에 어떤 종류의 후크를 제공하는 것이 좋습니다. 이렇게하면 시작 논리가 예측할 수없는 시간에 실행되는 대신이 유형의 것을 정확하게 제어 할 수 있습니다.

+0

+1 최종 권장 사항 –

+0

정적 풀의 싱글 톤 패턴과 같은 것을 사용하여 느리게이 작업을 수행 할 수도 있습니다. 처음 메서드가 호출되면 해당 풀에 데이터가 채워질 수 있습니다. – andersoj