问题标签 [shutdown-hook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java中关闭挂钩的有用示例?
我试图确保我的 Java 应用程序采取合理的步骤来保持健壮,其中一部分涉及优雅地关闭。我正在阅读有关关闭挂钩的信息,但实际上我并没有真正了解如何在实践中使用它们。
那里有一个实际的例子吗?
假设我有一个像下面这样一个非常简单的应用程序,它将数字写入文件,将 10 写入一行,分批 100 个,并且我想确保在程序中断时完成给定的批处理。我知道如何注册一个关闭挂钩,但我不知道如何将它集成到我的应用程序中。有什么建议么?
javascript - Flex ExternalInterface 在 Safari 中未触发(在其他任何地方都可以使用!)
我知道在让 JavaScript / Flex ExternalInterface 运行良好方面还有其他问题,但我认为这是一个奇怪的问题。它在除Safari(在 Mac 上)之外的所有浏览器中都能完美运行。Chrome、IE、Firefox - 一切正常,但 Safari,不,它只是不会触发。我在下面复制了我的代码,任何人都可以看到为什么它在 Safari 中不起作用吗?
(“你确定”对话框窗口出现在 Safari 中,但 Flex 应用程序中的方法没有被调用)
干杯亚历克斯
弹性代码:
JavaScript 代码:
vbscript - 使用 windows-scripting-host 关闭 Hook
此链接讨论如何使用 VB 实现关闭挂钩。现在我的问题是,可以使用 Windows 脚本主机/Windows 脚本主机完成类似的操作吗?
非常感谢您的意见;也许包括一些代码片段。
php - 当从命令行杀死脚本时,PHP 的 register_shutdown_function 会触发吗?
当从命令行(通过 Ctrl+c)或使用 kill 命令杀死 cron 进程时,是否可以调用函数?
我试过register_shutdown_function()
了,但是当脚本被杀死时似乎没有被调用,而是在脚本正常结束时被调用。
我正在尝试将结果记录到文件中并在 cron 实例自动终止时更新数据库值(即运行时间过长)。
java - Java注解处理:如何知道一轮是否是最后一轮?
扩展时AbstractProcessor
,有可能覆盖init(...)
,但没有“相反”的方法,将在处理完所有轮次后调用。
这是一个问题:当您必须将每轮收集的信息附加到同一个文件时,您永远无法关闭文件,因为您永远无法知道上一轮是什么时候。因此,该文件永远不会关闭并保持为空。
使用关闭钩子也不起作用,永远不会调用该钩子。
有任何想法吗?
java - jvm:是否有可能在关闭钩子中找出由于OOM而关闭的进程?
我有一个在 java (1.6) 中运行的关键进程,带有一个已注册的关闭挂钩。在某些情况下,我遇到了 OOM 问题(下面有关于该问题的更多详细信息),进程突然停止,我没有得到任何日志,我的 catch(Throable x) 没有捕获异常。
但是关闭挂钩有效。因此,如果有办法知道该进程将由于一些讨厌的 OOM 而关闭,我可以在退出之前记录必要的信息。
有没有办法做到这一点?
关于 OOM:不确定是什么异常,因为正如我所说,它没有被捕获。我知道这是一个 OOM,因为我开始这个过程
我得到一个堆转储文件。在其他情况下,会捕获一个异常,这是一个 ava.lang.OutOfMemoryError: GC 开销限制超出。但不确定是否总是这样。
编辑:
如果不清楚:我不是试图阻止 OOM,因为在某些情况下它可能出于正当原因发生,我只是想确保在应用程序日志文件中清楚
我的问题是:是否有可能在关机钩子中找出由于 OOM 而关闭的进程?
我需要以编程方式并从同一进程执行此操作。
目前最好的方法是查看它是否存在最近日期的 process_.hprof(我知道 pid)的堆转储文件 java_pid_pid 并推断存在 OOM。我想我可以尝试 Runtime.getRuntime().freeMemory() 并在可用内存非常低时报告问题,但不确定这有多可靠,也许当进程关闭时它已经释放了很多内存,该方法以上是我认为最好的。
ant - Ant 构建关闭 - Ctrl C
我有一组用于运行测试套件的 ant 任务,有时其中一个测试会冻结,我的整个测试套件会挂起。我添加了一个关闭处理程序,所以当我点击Ctrl+ Cant 时,它会优雅地关闭并给我一个报告,最终测试标记为未运行。(这很重要,因为这些是集成测试,可以运行数小时)这很好用,除了在没有调用我的关闭挂钩的 Windows 上。有没有办法让蚂蚁响应任何类型的输入并优雅地关闭?
php - 是否有用于执行代码后内容交付的 Symfony register_shutdown_function / destroy 等效项?
在向用户发送响应后,我需要发生各种事情,例如 register_shutdown_function过去是如何工作的。
我玩过 sfShutdownPlugin,它只使用 register_shutdown_function,我也看过使用析构函数(仅在动作上),但 Symfony 似乎不太喜欢,postExecute 方法仍然发生在内容之前已发送。
java - 运行 Windows 服务和 cobertura
我正在尝试使用 cobertura 运行 Windows 服务。唯一的问题是执行关闭挂钩时 cobertura 会报告结果。我无法直接修改这些结果的代码,所以我想知道是否可以将 java 应用程序作为 Windows 服务运行并仍然收集 cobertura 结果。我检测代码,将其添加到类路径中,但是在报告时,我什么也没得到。查看跟踪文件时,无法加载/保存任何 cobertura 信息。这让我相信关闭挂钩永远不会被执行,否则我会得到结果。
感谢您的帮助!