4
私のアプリケーションで動的CXFクライアントを作成しています。クラスアンロード用の正しいJava 8セットアップ(メタスペースクリーンアップ)/ cxfの問題
これはクライアント作成のコードスニペットです:これで私は、セットアップのテストアプリケーションが
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
を偶然に、ループ内のクライアントの作成を実行したとき
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client client = factory.createClient("wsdl/hello.wsdl");
今、私は、javaを取得しています。 lang.OutOfMemoryError:メタスペース例外。なぜ私はクラスがアンロードされていない/メタスペースがクリーンアップされているのかわかりません。誰かが私を助けることができる場合hereは私のテストプロジェクトです。私が行ったように(mvn clean package)それをビルドしてコマンドラインで実行してください。
私はJDK8u77を使用しています。
自分の 'ClassLoader'を' JaxWsDynamicClientFactory.createClient() 'に渡せず、終了したらそれを破壊する理由は何ですか? – Stackee007