我遇到了内存泄漏之类的问题。 我正在创建一个包装在 MATLAB 类中的 jLabel 对象。 我正在使用所有 sets/gets 的句柄来尝试防止问题和内存泄漏。
我正在使用这段代码为 jLabel 设置 MouseExitedCallback。这是类的一个方法:
function SetMouseExitedCallback (obj, exitcallback)
set (obj.hLabel, 'MouseExitedCallback', exitcallback)
end
此方法是从另一个类调用的,该类实际上包含 MouseExitedCallback 的代码。 在那个类中,它是这样调用的:
obj.tooltip.SetMouseExitedCallback (@(src, event)obj.MouseExited);
我遇到的问题是,如果我添加最后一行,如果我尝试编辑项目中的文件,它会告诉我 jLabel 类仍在内存中。 我能做些什么来防止这种情况发生?
最佳答案
首先我想到的是
obj.tooltip.SetMouseExitedCallback ('');
它在删除(析构函数)方法中。那没有用,因为从未调用过析构函数。实际上,另一个类也从未调用过析构函数,即定义了实际 MouseExited() 回调的类。
最后起作用的是调用:
obj.tooltip.SetMouseExitedCallback ('');
在隐藏工具提示的方法中。它与 Mouse Exited() 方法在同一个类中定义。 然后在应用程序关闭后,VM 调用析构函数并销毁对象。
关于java - 使用自定义 Java 对象回调后对象仍在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139679/