操作中にいくつかの (約 3 または 4) クラスの多くのオブジェクトを使用する Perl ライブラリがあります。
コードのテストでは、多すぎないようにしたいと思います (メモリ リークについて話しているのではなく、それを確認する方法を知っています)。この目的のために、使用されたすべてのオブジェクトを数え、実行中に使用された最大値をテスト データで確認できると考えました。次に、得られた数を、ライブラリが使用する必要があるオブジェクトの数についての推測と比較します。
ただし、これを実装するには問題があります。私は2つの可能な方法を考えました:
インターセプト
Package::new
とPackage::DESTROY
. ただし、これには、そのパッケージでnew
常に新しいオブジェクトが返されるとは限らないという小さな問題があります。場合によっては、既存のものを使用します (オブジェクトは不変オブジェクトとして使用されるため、あまり問題にはなりません)。そのため、個々のオブジェクトを追跡して、それが以前に存在したかどうかを確認する必要があります。インターセプト
Package::bless
とPackage::DESTROY
. これは機能するはずですが、少し異例のようです。
問題は、これらの方法のどれが成功する可能性が高いか (おそらく、同様の状況で一般的に使用される方法)、2 番目の方法をどのように実装するか (Package::bless
問題のすべてのパッケージまたは基本クラスのみをオーバーライドする必要があるかどうか) です。等。)。