我是否必须在 Webstart 应用程序中显式调用 System.exit() ?

2023-11-22

最近我将 Swing 应用程序转换为 Webstart。该过程非常简单,但我发现在关闭所有窗口后,我的应用程序的 JVM 并未终止。线程转储显示有几个非守护线程,特别是 Swing 的 EDT、AWT 和几个与 websart 相关的线程。

实际使用的策略是每个窗口在创建时增加一个计数器,在关闭时减少一个计数器。默认关闭操作是DISPOSE_ON_CLOSE。当计数器达到零时,我停止所有线程池并释放所有 JNI 资源。

当我从 bat 文件(相同的 JAR)启动应用程序时,当所有窗口都关闭时它会正常终止,所以我认为问题与 Webstart 有关。

现在的问题是:

  1. 谁能告诉我到底发生了什么?为什么 Webstart 会留下僵尸 JVM?
  2. 有没有办法在不停止 JVM 的情况下显式释放 Webstart 资源?
  3. 我一直认为,调用 System.exit() 会鼓励不释放资源并依赖操作系统在您之后进行清理的草率做法(如果您稍后重用代码,这可能会导致令人讨厌的意外)...我错过了什么吗?

另请参阅跟进问题用于检测应用程序是否已由 Webstart 启动。


因为 WebStart 中的错误,是的。 WebStart 出于其自身目的启动一个“安全线程”,与 EDT 进行交互。当所有窗口和 AWT 资源都被释放时,该 SecureThread 可以防止 Java 进程自动终止。

欲了解更多信息,请参阅http://www.pushing-pixels.org/?p=232

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我是否必须在 Webstart 应用程序中显式调用 System.exit() ? 的相关文章

  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 来自 AJAX 调用的 res.redirect

    我正在尝试在 ajax 之后进行重定向put要求 我计划使用纯 JS 客户端进行验证 Client document ready function login gt var username name username val var pa
  • 在Eclipse中,是否可以找到项目中采用某种参数类型的所有方法?

    这基本上就是我的问题 我正在参数化方法中将所有方法 ArrayList 转换为 HashMap 但我不想将所有 ArrayList 转换为 HashMap 因为有一些方法是在本地使用的 这更多的是出于好奇 但它会很有用 那么 在 Eclip
  • 带有图像

    我将 JSF 与 Primefaces 一起使用 我想使用仅包含图像的单选按钮按钮集 但我无法使其工作 这是代码
  • 我应该将 Maven 项目的应用程序配置文件放在哪里?

    我正在使用Maven 应用程序组装器用于从我的 Java 项目生成独立可执行文件的插件 应用程序读取配置文件 包括 Spring 文件 应用程序汇编器插件有一个选项 默认激活 可以将 etc 目录添加到应用程序的类路径中 但是我应该怎么做才
  • 来自类的 Java 资源与线程

    有什么区别 getClass getResource some resource file txt vs Thread currentThread getContextClassLoader getResource some resourc
  • 如何在 OpenCV 中找到二值骨架图像的端点?

    我有一个二进制像素的骨架 如下所示 我想找到该骨架端点的坐标 在本例中有四个 如果适用 请使用 Open CV 效率很重要 因为我正在从视频源中实时分析其中的许多内容 并且需要同时做许多其他事情 请注意 抱歉 上面的屏幕截图已调整了人工制品
  • ggplot2:将各个facet_wrap面保存为单独的绘图对象

    我是以下的忠实粉丝facet wrap 尽管在 R 中分割大数据框 绘制多个图并进行探索的速度很快 但它并不总是在纸张或幻灯片中呈现的最佳工具 我发现自己在比例 binwidths 和字体大小上浪费了很多时间 并最终在 inkscape 上
  • C# 创建没有 的 XML 输出文件

    我是 C 开发新手 所以这里可能是一个非常简单的问题 我试图获得这样的输出
  • 自定义 pip install 命令未运行

    我正在尝试为我正在编写的 pip 库运行一些预安装命令 我的安装文件如下所示 from setuptools import setup from setuptools command install import install class
  • 如何对 __m128 类型变量中的浮点元素取反(更改符号)?

    是否有任何单个指令或函数可以反转符号 m128 内的每个浮点数 IE a r0 r1 r2 r3 gt a r0 r1 r2 r3 我知道这可以通过 mm sub ps mm set1 ps 0 0 a 但它不是可能很慢吗 mm set1
  • 在WPF网格中绘制对角线

    我想我正在尝试在 WPF 中做一些相对简单的事情 但我无法弄清楚如何做 我认为我可能正处于将其过于复杂化的边缘 如果我有一个 3 行 3 列的网格 并且我想连接两个单元格的角以创建对角边框 那么最好的方法是什么 理想情况下 如果调整控件的大
  • 在 Angular 8 中,如何从浏览器控制台访问注入的服务?

    我正在使用 Angular 8 我想从浏览器控制台 Chrome 开发工具 访问注入的服务 我可以像这样从浏览器控制台访问注入器 ng probe document querySelector app root injector 我想在开发
  • 声音文件作为 android MediaPlayer 中的变量

    在学习 android java 的过程中 我想创建一个可以从原始文件夹中播放特定声音的函数 我试图将声音文件定义为字符串 以便可以重用该函数 但是我陷入了 无法解析符号 的困境 public class MainActivity exte
  • 与共享主键的一对一关系生成 n+1 个选择;有什么解决方法吗?

    想象一下关系数据库中有 2 个表 例如人员和计费 这些实体之间定义了一个 非强制性 OneToOne 关联 并且它们共享 Person 主键 即 PERSON ID 在 Person 和 Billing 中定义 并且它是后者的外键 通过命名
  • Java Socket和ServerSocket在使用端口上的区别

    在服务器端 我们使用 Socket server serverSocket accept 创建一个套接字 创建套接字后 我们可以创建一个新线程来处理该套接字的输入 输出流 因此 如果有进一步的连接请求进来 我们可以返回监听同一端口并创建新的
  • 这超出了 GitHub 的文件大小限制 [重复]

    这个问题在这里已经有答案了 我的 github 存储库中有一些大文件 我尝试添加 提交 推送 但推送命令给出了以下错误 远程 错误 文件 app dump sql 为 106 67 MB 这超出了 GitHub 的文件大小限制 100 00
  • 创建交互式登录会话

    我正在尝试创建一个类似于微软废弃的实用程序超快速用户切换器 download 它允许快速用户切换 而无需通过欢迎屏幕 我有一个使用未记录的工作实现WinStationConnectWAPI 以及WTSEnumerateSessions 但只
  • Caffe可以直接对图像的像素进行分类吗?

    我想将图像的像素分类为 是街道 或 不是街道 我有一些训练数据KITTI数据集我看到 Caffe 有一个IMAGE DATA图层类型 标签以与输入图像大小相同的图像形式存在 除了 Caffe 之外 我解决这个问题的第一个想法是在应该分类的像
  • 在 M1 Mac 上找不到 PyTables 的 HDF5 安装

    在 M1 Mac macOS Monterey 上运行12 4 Python 3 10 3 pip install tables Collecting tables Using cached tables 3 7 0 tar gz 8 2
  • 我是否必须在 Webstart 应用程序中显式调用 System.exit() ?

    最近我将 Swing 应用程序转换为 Webstart 该过程非常简单 但我发现在关闭所有窗口后 我的应用程序的 JVM 并未终止 线程转储显示有几个非守护线程 特别是 Swing 的 EDT AWT 和几个与 websart 相关的线程