アプリケーションで動的 CXF クライアントを作成しています。
これは、クライアント作成のコード スニペットです。
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client client = factory.createClient("wsdl/hello.wsdl");
さて、このパラメータでテストアプリケーションをセットアップすると
java -Djava.io.tmpdir=/tmp/cxf -XX:MetaspaceSize=12m -XX:MaxMetaspaceSize=24m -XX:MaxMetaspaceFreeRatio=80 -XX:MinMetaspaceFreeRatio=40 -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=sums=200 -XX:+ParallelRefProcEnabled -XX:+AggressiveOpts -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/hdump.hprof -XshowSettings -jar classloader-leak.jar
クライアントの作成をループで実行すると、java.lang.OutOfMemoryError: Metaspace exception が発生します。クラスがアンロードされない/メタスペースがクリーンアップされない理由がわかりません。ここで誰かが私を助けることができれば、私のテストプロジェクトです。それをビルド(mvn clean package)して、私と同じようにコマンドラインで実行するだけです。
私はJDK8u77を使用しています。