2013-09-24 1 views
1

여러 스레드에서 Javassist 클래스를 공유하여 웹 응용 프로그램에서 더 나은 성능을 얻을 수 있습니까? 나는 각 페이지 요청에서 생성을 피하기 위해 proxyClass에 대해 ConcurrentMap으로 캐시를 생성 할 수 있다고 생각합니다.Javassist 클래스를 여러 스레드와 공유 할 수 있습니까?

ProxyFactory factory = new ProxyFactory(); 
factory.setFilter(IGNORE_BRIDGE_AND_OBJECT_METHODS); 
factory.setInterfaces(new Class[] { type }); 

Class<?> proxyClass = factory.createClass(); // can I cache here after class creation? 

Object proxyInstance = ...; // objenesis creates new instance here 
setHandler(proxyInstance, myCustomHandlerHere); 

업데이트 : 내가와 Javassist 코드를보고,와 Javassist는 캐시를 제공

내 코드입니다.

답변

0

물론 가능합니다. Javassist 컴파일 클래스는 일류 클래스이기 때문에 (단시간 임에도 불구하고) 생성 된 클래스를 캐시하면 나중에 반복해서 다시 컴파일해야하는 오버 헤드를 줄일 수 있습니다. 또한 동일한 가상 코드를 한 번만 다시 컴파일하므로 클래스에 쓸모없는 이름을 만들 필요가 없습니다.

관련 문제