1

我可以在多个线程中共享 Javassist 类以在 Web 应用程序中获得更好的性能吗?我认为我可以使用 for 创建一个缓存,ConcurrentMapproxyClass避免在每个页面请求中创建。

我的代码是:

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 还提供了缓存。

4

1 回答 1

0

你当然可以。Javassist 编译的类是一流的类(即使只是很短的时间),因此最好在创建类后缓存创建的类,以节省一遍又一遍地重新编译它们的开销。另外,您不必为您的类发明不可能的名称,因为您只会重新编译相同的虚拟代码一次。

于 2013-09-24T14:43:37.520 回答