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

原文 标签 IT工具网 编程

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

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

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

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

相关文章:

Java将数组转换为List

java如何计算MD5值

如何用JavaScript生成一个GUID/UUID

比较java枚举成员使用equal还是==

如何在classpath中设置多个jar包

短网址的用途及原理

使用jquery将表单数据转换为javascript对象

Java将InputStream转换为String