1

Javassist クラスを複数のスレッドで共有して、Web アプリケーションのパフォーマンスを向上させることはできますか? ページリクエストごとに作成を避けるためにConcurrentMapforでキャッシュを作成できると思います。proxyClass

私のコードは次のとおりです。

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 に答える