清除matlab嵌套回调中引用的java对象

时间:2015-04-08 17:06:58

标签: java swing matlab memory-leaks

我的代码是一个带有几个基于java的UI(JIDE组件,自定义java类和jTable)的GUI。

以下是我的代码片段:

%% 1st Table.
%Loading my custom java class ParameterTableModel (extends DefaultTableModel)
% ...

%% 2nd Table - Building JIDE property table
PropertyTableList = java.util.ArrayList();

% Creating 1st property
MyProp = javaObjectEDT(com.jidesoft.grid.DefaultProperty());
MyProp.setName('TypeOfAnalysis');
set(handle(MyProp,'CallbackProperties'),'PropertyChangeCallback',{@PropCB});
PropertyTableList.add(MyProp);

% Building table
PropertyTableModel = javaObjectEDT(com.jidesoft.grid.PropertyTableModel(PropertyTableList));
PropertyTableGrid = javaObjectEDT(com.jidesoft.grid.PropertyTable(PropertyTableModel));
PropertyPane = javaObjectEDT(com.jidesoft.grid.PropertyPane(PropertyTableGrid));  
[~, mhPropertyPane] =javacomponent(PropertyPane,[0,0,1,1], figure );
set(mhPropertyPane,'Units','normalized','Position',[0,0,1,1])

% fake callback, property changed
function PropCB( hobj, hev )
    disp('PropCB')
end

当我关闭主图并在命令窗口中调用“clear java”时,会发出以下警告:

  

警告:存在ParameterTableModel类的对象 - 不清除java

如果我没有将回调附加到MyProp,则不再发出警告。 我找到的唯一解决方法是致电:

set(MyProp.handle('CallbackProperties'),'PropertyChangeCallback',[])

在图的CloseRequestFcn中。但这并不令人满意,因为我在完整的GUI中有数百个这样的属性。

我发现这个问题与我的问题有关,但没有真正的答案: clear Java memory

0 个答案:

没有答案