有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用自定义Java对象回调后,matlab对象仍在内存中

我有一个内存泄漏的问题。 我正在创建一个jLabel对象,它被包装在MATLAB类中。 我正在使用所有集合/集合的句柄来防止问题和内存泄漏

我正在使用以下代码为jLabel设置MouseExitedCallback。这是一个类的方法:

function SetMouseExitedCallback (obj, exitcallback)
    set (obj.hLabel, 'MouseExitedCallback', exitcallback)
end

此方法是从另一个类调用的,该类实际上包含MouseExitedCallback的代码。 在该类中,它被称为:

obj.tooltip.SetMouseExitedCallback (@(src, event)obj.MouseExited);

我遇到的问题是,如果我添加最后一行,如果我尝试编辑项目中的文件,它会告诉我jLabel类仍然在内存中。 我能做些什么来防止这种情况


共 (1) 个答案

  1. # 1 楼答案

    首先我的想法是

    obj.tooltip.SetMouseExitedCallback ('');
    

    它在delete(析构函数)方法中被删除。这不起作用,因为从未调用析构函数。实际上,也从未为另一个类调用过析构函数,即定义了实际MouseExited()回调的类

    最后起作用的是:

    obj.tooltip.SetMouseExitedCallback ('');
    

    在中,选择隐藏工具提示的方法。它与Mouse Exited()方法在同一个类中定义。 然后在应用程序关闭后,VM调用析构函数并销毁对象