- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上下文:我有一个从父“启动器”程序运行的 Swing JFrame 应用程序。启动器负责检查更新和实际更新应用程序。所以它在子类加载器中运行应用程序,最终在新 jar 可用时重新启动它。
现在,一切正常,但我遇到了这个问题:看起来 JFrame 中的某些内容泄漏了,并阻止了 JFrame 和整个类加载器被垃圾收集。通过 Frame.getFrames() 循环显示 JFrame 仍然以某种方式存在,即使它已被处理。
我已经能够将测试用例减少到以下类。请注意,调用 setBounds 是错误发生所必需的,如果删除它,JFrame 将被正确地垃圾化并从 getFrames() 中消失。我无法理解该方法中是什么触发了问题,因为它在内部做了数百万件事。
我在 JDK 1.7.0_25-b17 上运行
import java.awt.Frame;
import java.io.IOException;
import javax.swing.JFrame;
public class BugTest extends JFrame {
public BugTest() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setBounds(0, 0, 100, 100); // <- comment this and the leak disappear! -<<
setVisible(true);
}
public static void main(String[] args) throws IOException {
new BugTest();
System.out.println("Close the window then press enter");
System.in.read();
System.gc();
Frame[] frames = Frame.getFrames();
System.out.println("There are " + frames.length + " frames (should be 0)");
for (Frame frame : frames) {
System.out.println(frame);
}
}
public void finalize() {
System.out.println("Frame was finalized");
}
}
最佳答案
Objects
仅与 JVM 一起结束,以及 never will be GC'ed ,您需要在您身边进行更改 关于java - setSize/Bounds 和 AWT/Swing 清理上的 Swing 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969249/
假设我有一个 JTextField,所以有两个选项 setSize(WIDTH, HEIGHT) 和 setSize(new Dimension(WIDTH, HEIGHT)) 像这样: JTextF
这段代码运行得很好。但是,当我输入 setSize(700,700) 并运行代码时,它不会显示 JButton,而只显示框架。我认为 JButton 的网格布局可能存在一些问题,因此我将每个网格布局的
所以我似乎无法弄清楚为什么会出现此错误(取消引用空指针)。 我必须初始化 newframe,否则我会收到未初始化错误,并且 NetBeans 建议我初始化它。然而,这样做之后,我不断收到此错误。下面是
我有一个用于主要 JFrame 的 ComponentListener,它在调整大小时发送一个事件,但在事件被触发时,Jpanel 已调整大小。 public class Test implement
我有一个程序需要两个按钮,一个是常规按钮,另一个是图片会根据鼠标滚动而改变。目前,由于图片很大,JButton 自定义也很大,我可以更改自定义的大小并保持图像(和翻转图像)成比例吗?我试过 setSi
我正在使用一个简单的棋盘程序,它运行良好,但它非常小。我尝试使用 acm.graphics.setsize 方法调整窗口大小,但直到我放置图形对象后它才调整大小。我是否需要做一些事情来“刷新”对程序的
我有一个示例代码: import java.awt.*; import javax.swing.*; import javax.swing.border.BevelBorder; public cla
我正在使用此代码在 OSX 上调整 Electron 窗口的大小: document.getElementById("resize-btn2").addEventListener("click", f
我正在使用 Java 测试一个简单的东西。 package us.superdisk.Teststs; import java.awt.Dimension; import java.awt.Graph
我想要尺寸完全适合我的屏幕的 JFrame。我使用 getScreenSize(); 来获取计算机的分辨率并将其设置为 JFrame 的大小。然而,由于标题栏的原因,我发现 Jframe 的尺寸实际上
我正在制作一个大小为 500x500 像素的 JFrame。我制作了一个蓝色背景,并在右下角添加了一个从 (490,490) 到 (500,500) 的红色方 block 。 图片: 我在屏幕上没有看
尝试设置 JOptionPane 的大小,但它坚持使用相同的大小。我尝试过 setPreferredSize 和 setSize 但由于某种原因 JOptionPane 坚持使用相同的宽度和高度。基本
在您提出 GridBagLayout 建议之前,我已经尝试过了,但无法正常工作。我想要一个尺寸为 800 x 800 且中心面板为 600x600 的框架。现在,当我运行它时,中心面板是 600x57
我正在尝试在动态更新页面内容后调整 Facebook Canvas 应用程序的高度。人们应该使用 FB.Canvas.setSize() 来做到这一点,但它只会增加高度。与.setAutoResize
我在 Android 应用程序中创建按钮时遇到两个问题。 按钮(经典Button)中的图像模糊。我认为 Android studio 会增加图像的大小,但不确定。这是模拟器的屏幕和使用的图像: 有办法
我的 Qt5 GUI 中有 QSplitter 小部件,并且有两个子小部件添加到该拆分器。并且有一个 QPushButton 小部件,当按下该按钮时,第二个子部件消失,当再次按下该按钮时,该子部件出现
import javax.swing.JFrame; import javax.swing.SwingUtilities; class Demo { JFrame jf; Demo()
看看这段代码 friend 不知道为什么我不能设置JPanel的大小.... import java.io.*; import java.util.*; import java.sql.*; //im
本文整理了Java中org.bukkit.WorldBorder.setSize()方法的一些代码示例,展示了WorldBorder.setSize()的具体用法。这些代码示例主要来源于Github/
我是 java swing 的新手,正在构建一个带有菜单和带有 BorderLayout 的 JPanel 的应用程序。但即使设置了 setSize,面板也不会显示,因为我在这里是红色的。这里我使用菜
我是一名优秀的程序员,十分优秀!