JX |
メモリ・マネージメント と リーク・ディテクションMemory Management and Leak Detection |
C++ がガベージ・コレクションを持ち合わせなかったことから、ある割り当てが終わるや否や、メモリーをダイナミックにアロケートするどの断片も解放することが必要である。JX を使用した場合、ウィンドウ とディレクタは、効果的にガベージ・コレクションされる。何故ならば、エンクロージャーとオーナーによって削除されるからである。JPtrArray は、配列が破壊されるとき、全てのオブジェクトを削除するためのオプションを提供する。しかし、その他のものは手動で解放されなければならない。これを行なうことを忘れる時、メモリの漏出が起きる。
JMemoryManager はメモリの漏出を追跡する為に作られた。ソース上で、#include
<jNew.h> とインクルード・ファイルを定義することで、(jAssert.h により自動的に行なわれる)、全てのメモリーへの割り当と開放を調査するために、new
と delete のオペレーターが自動的にオーバーライドされる。メモリの漏出を発見するには、環境変数JMM_RECORD_ALLOCATED
と JMM_PRINT_EXIT_STATS を、yes と設定しておいて、プログラムを実行させると、これらの全ての機能を試した後、終了する。開放されなかったメモリ・ブロックは、そのソースファイル名とメモリの割り当てが行われたライン番号と一緒にが報告される。この情報をもとに、各々のメモリーブロックがどこで開放されるべきであるか探し出すのに役に立つ。
それぞれの、メモリー・ブロックがどこで開放されるべきかを、見つけ出せばよいのです。
JMemoryManager は、その他に、便利な機能を提供する。
匿名 ftp によりJX を使うために必要とされる全ての情報を入手することができます。