【问题标题】:Kill a java swing GUI (for real, everything dead)杀死一个 java swing GUI(真的,一切都死了)
【发布时间】:2012-04-24 14:24:54
【问题描述】:

我以编程方式启动我的 swing GUI 并存储参考。 我想终止用户输入的 GUI 以优化性能。

如果我对 JFrame 进行处置,计时器和线程仍在工作。

我怎样才能简单地实现 JFrame 终止及其所有子线程和资源?

【问题讨论】:

  • 明确一点,当 GUI 被用户杀死时,我希望应用程序继续运行。
  • GUI 在做什么需要大量 CPU?如果 GUI 正在执行的任何操作消耗大量 CPU,那么这无关紧要。顺便说一句。这个问题是“看不到策略的目标”。目标是什么,您尝试通过什么实际程序功能提供。 '杀死 GUI'(读起来像废话,顺便说一句)?
  • 我什至敢说,如果你有 UI 相关的 Timers 和 Threads 在 UI 被处理时没有清理它们,你写了一个内存泄漏。并且没有任何魔法可以解决这些问题
  • 你必须使用JProfiler,在那里你可以找出所有打开的对象留在JVM内存中

标签: java swing resources kill terminate


【解决方案1】:

通常,如果某些事情在 Java 中是不可能的,那是因为它不能在多个平台上移植。不允许关闭 Java SWING 事件处理程序的设计决定可能是因为某些操作系统不允许两次启动 GUI 进程。

再一次,为什么你认为关闭这些线程很重要?问自己一个问题:是因为在调试模式下查看程序时它们会惹恼您,还是真的可衡量性能影响?

【讨论】:

  • 就我而言,我的用户可以终止 GUI 并使用控制台 UI 重新启动它。如果在几个月内完成,它可能会很重要。
  • @LucasM:请给我们一个简单的、可重复的例子来说明重要性。 while(true) {JFrame frame = new JFRame(); frame.setVisible(true); frame.dispose(); 不会泄漏任何内存或创建三个以上的线程。
猜你喜欢
  • 2020-10-27
  • 2012-11-30
  • 2019-08-24
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多