Java JFrame.拆卸(部件组件)“;“摧毁”;我的组件?

Java JFrame.拆卸(部件组件)“;“摧毁”;我的组件?,java,oracle,swing,memory-leaks,Java,Oracle,Swing,Memory Leaks,我想知道使用JFrame的remove(Component comp)方法是从内存中释放组件并将其销毁,还是保留供将来使用?我担心内存泄漏,在JFrame上找不到任何线索。remove仅从JFrame中删除组件 是否从内存中删除该组件取决于是否存在对该对象的任何其他引用 如果JFrame是引用组件的最后一个对象,那么Java的垃圾收集将删除该组件 如果代码中的其他地方还有另一个活动引用,您也需要删除该引用,然后才能对其进行垃圾收集 (理论上,Java可以垃圾收集对象,也可以不垃圾收集对象,这是它

我想知道使用JFrame的remove(Component comp)方法是从内存中释放组件并将其销毁,还是保留供将来使用?我担心内存泄漏,在JFrame上找不到任何线索。remove仅从JFrame中删除组件

是否从内存中删除该组件取决于是否存在对该对象的任何其他引用

如果JFrame是引用组件的最后一个对象,那么Java的垃圾收集将删除该组件

如果代码中的其他地方还有另一个活动引用,您也需要删除该引用,然后才能对其进行垃圾收集


(理论上,Java可以垃圾收集对象,也可以不垃圾收集对象,这是它认为合适的。但是,当内存耗尽时,它往往更具攻击性,通常可以信任它继续工作)

JFrame.remove只从JFrame中删除组件

是否从内存中删除该组件取决于是否存在对该对象的任何其他引用

如果JFrame是引用组件的最后一个对象,那么Java的垃圾收集将删除该组件

如果代码中的其他地方还有另一个活动引用,您也需要删除该引用,然后才能对其进行垃圾收集


(理论上,Java可以垃圾收集对象,也可以不垃圾收集对象,这是它认为合适的。但是,当内存耗尽时,它往往更具攻击性,通常可以信任它继续工作)

JFrame.remove只从JFrame中删除组件

是否从内存中删除该组件取决于是否存在对该对象的任何其他引用

如果JFrame是引用组件的最后一个对象,那么Java的垃圾收集将删除该组件

如果代码中的其他地方还有另一个活动引用,您也需要删除该引用,然后才能对其进行垃圾收集


(理论上,Java可以垃圾收集对象,也可以不垃圾收集对象,这是它认为合适的。但是,当内存耗尽时,它往往更具攻击性,通常可以信任它继续工作)

JFrame.remove只从JFrame中删除组件

是否从内存中删除该组件取决于是否存在对该对象的任何其他引用

如果JFrame是引用组件的最后一个对象,那么Java的垃圾收集将删除该组件

如果代码中的其他地方还有另一个活动引用,您也需要删除该引用,然后才能对其进行垃圾收集


(理论上,Java可能会也可能不会垃圾收集您的对象,这是它认为合适的。但是,当内存耗尽时,它往往更具攻击性,通常可以信任它继续工作)

Java有垃圾收集器,可以收集未使用的对象并将其删除。除非通过JNI调用C/C++方法,否则您不需要担心它。如果这些方法创建自己的对象但不删除它们,则可能会发生内存泄漏。

Java有垃圾收集器,可以收集未使用的对象并将其删除。除非通过JNI调用C/C++方法,否则您不需要担心它。如果这些方法创建自己的对象但不删除它们,则可能会发生内存泄漏。

Java有垃圾收集器,可以收集未使用的对象并将其删除。除非通过JNI调用C/C++方法,否则您不需要担心它。如果这些方法创建自己的对象但不删除它们,则可能会发生内存泄漏。

Java有垃圾收集器,可以收集未使用的对象并将其删除。除非通过JNI调用C/C++方法,否则您不需要担心它。如果这些方法创建自己的对象但不删除它们,则可能会发生内存泄漏。

让我看看是否找到了您;我需要杀死我的父JFrame以杀死它的面板子对象,否则它们将不会被收集,是吗?不,您只需要从JFrame中移除面板(即移除JFrame对面板的引用)并移除对该面板的任何其他引用。例如,如果在Main()方法中执行了panel2=newjpane();然后将panel2添加到JFrame中,您可能还需要在垃圾收集获取它之前将panel2设置为null,否则它不知道您是否打算再次使用panel2。如果您使用了yourFrame.add(new JPanel())或类似工具,上述问题可能不会出现,或者如果原始引用是在一个不再运行的函数中,等等。只有在代码中的某个地方仍然有一个对JPanel的引用,这才重要让我看看我是否得到了你;我需要杀死我的父JFrame以杀死它的面板子对象,否则它们将不会被收集,是吗?不,您只需要从JFrame中移除面板(即移除JFrame对面板的引用)并移除对该面板的任何其他引用。例如,如果在Main()方法中执行了panel2=newjpane();然后将panel2添加到JFrame中,您可能还需要在垃圾收集获取它之前将panel2设置为null,否则它不知道您是否打算再次使用panel2。如果您使用了yourFrame.add(new JPanel())或类似工具,上述问题可能不会出现,或者如果原始引用是在一个不再运行的函数中,等等。只有在代码中的某个地方仍然有一个对JPanel的引用,这才重要让我看看我是否得到了你;我需要杀死我的父JFrame以杀死它的面板子对象,否则它们将不会被收集,是吗?不,您只需要从JFrame中移除面板(即移除JFrame对面板的引用)并移除对该面板的任何其他引用。例如,如果在Main()方法中执行了panel2=newjpane();然后将panel2添加到JFrame中,您可能还需要在垃圾收集获取它之前将panel2设置为null,否则它不知道您是否打算