質問

Javaオブジェクトへの参照を含むMATLABクラスがあります

classdef MyClass
  properties
    j = myJavaClass
  end
  methods
...
  end
end

そしてそれを使用した後(clear、scope exitを使用する、または明示的にmyClass = 0;を設定する)、JavaオブジェクトはまだRuntime.gcを呼び出した後も生きています。

ダンプでは、オブジェクトがまだjmap -histo pIDを使用して、MATLABプロセスのJVMヒープにあることがわかります。したがって、clear、clear JAVA、clearクラスの呼び出しにもかかわらず、MATLAB自体がまだオブジェクトを参照していると想定していますなど-何も役に立たない

アイデアはありますか

役に立ちましたか?

解決 2

提案された回避策のノービスは機能しているようです-デストラクタに行を追加します

function delete( obj )
  ...
  jObject = 0;
end

MATLABのJVMヒープにオブジェクトが存在しないようにしました。


これは、参照されていないMCOSクラスのJAVAオブジェクトの参照を引き起こすMATLABのバグのように見えます。

scroll top