杀进程后内存释放顺序导致的问题

原文 标签 IT工具网 编程

先说结论:系统会先将静态区内存销毁,然后销毁堆上的内存。

如果程序中存在线程中使用static类型的单例对象,进程结束时,static对象先被释放,而线程还在使用该对象,则会导致crash。

解决方案:
监听进程结束信号(通过注册onexit函数),同步等待线程结束即可。

在windows下,如果杀进程的时候去调用notify,会出现卡死的情况,因为线程被先释放了(这点目前只在Windows下出现,iOS/Mac/Android上不会出现这种问题)。

相关文章:

JavaScript中的闭包是如何工作的?

JSF, Servlet 和 JSP (三种技术)有什么区别

JavaScript对URL编码的处理

怎样在一个<div>中水平居中另一个<div>

Java将InputStream转换为String

java如何将String转换为enum

为什么Java的Vector类被认为是过时的或者废弃的

JSON内容的HTTP Header该怎么填?

json数据中可以写注释吗?