2016-09-08 12 views
4

Java SDK 3.3.0を使用してEclipseでWatson TTSサービスのPOCを作成しました。アプリケーションサーバーは、Win10 PC上でEclipse経由でローカルに実行されるTomcat v8.0です。すべて正常に動作します。つまり、オーディオストリームを取得できますが、Tomcatを停止するとメモリリークに関する警告が表示されます。Watson Java SDKとOkHttpメモリリーク

Webアプリケーション[testapp]が[OkHttp ConnectionPool]という名前のスレッドを開始したように見えますが、停止できませんでした。これはメモリリークを引き起こす可能性が非常に高いです。スレッドのスタックトレース:

java.lang.Object.wait(Native Method) 
java.lang.Object.wait(Object.java:461) 
okhttp3.ConnectionPool$1.run(ConnectionPool.java:66) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) java.lang.Thread.run(Thread.java:745) 

[Okio Watchdog]に似たメッセージがあります。

私はSDKを見てきましたが、TextToSpeech接続を正常に終了することについて何も見つかりませんでした。これは懸念の原因ですか?このサービスを本番ウェブサイトに追加すると、Sun Solaris 10環境でもTomcat8と一緒に実行されます。

+0

私がこのhttps://github.com/watson-developer-cloud/java-sdk/issues/686に関連して作業している問題があります –

答えて

0

IBM Watson Java SDKOkHttpを使用し、接続プールと異なる要求を処理する非同期スレッドを作成するため、いくつかの調査の結果、これらの警告が生成されることがわかりました。

なぜこの方法であるのかについての良い理由があり、また、OkHttpClientを再利用してスレッドを少なくする方法も示唆されています。私は#686の一部としてそれに取り組んでいます。

詳しくはOkhttpリポジトリのthis issueをご覧ください。

OkHttpClientインスタンスを再利用するJava SDK(v3.8.1)の新しいバージョンをリリースしようとしているため、スレッド数が少なくなります。

関連する問題