2012-03-12 21 views
2

私は小さなJavaプロジェクトのメンテナンスをDLL依存(JNI)を継承しています。 Javaプログラムは、一連のパラメータを使用して呼び出され、DLLに転送されます(さらにサードパーティのAPIに送信されます)。入力と出力は単純な文字列です。Javaプロセスが終了したときにJNI DLLによって使用されるメモリが返されますか?

DLLによって使用されるメモリは、Javaプロセスの 'heap?結果として、このプロセスのすべてのメモリ(DLLによって使用されるものを含む)がjavaプログラムが終了したときにシステムに返されることを意味しますか?

(その問題などの詳細ば我々は、Windows Server 2008とのJava 1.6を話している。)

答えて

5

オペレーティングシステムは、プロセスが終了するプロセスによって割り当てすべてメモリをクリーンアップする責任があります。

DLLはプロセスにロードされます。

したがって、JVM [プロセス]が終了すると、すべてメモリ(DLLによって割り当てられたメモリを含む)がOSによって再利用されます。

オープンされているが終了していない他の[サブ]プロセスのリソースや、開いているハンドルが他の場所にある共有リソース、OS制御外のリソース(分散キャッシュなど)などの外部リソースは除外されます。 。

ハッピーコーディング。

関連する問題