JVM的内存管理

发表于:2010-12-10 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:青竹少年(cnblogs)    来源:51Testing软件测试网采编

  3.不可视阶段:

  先看一段代码:

1 public void process(){
2     try{
3         Object obj = new Object();
4         obj.doSomething();
5     }
6     catch(Exception e){
7         e.printStackTrace();
8     }
9     while(isLoop){
10         //这个区域对于obj对象来说已经是不可视的了
11         //因此下面的代码在编译时会引发错误
12          obj.doSomething();
13     }
14 }

  如果一个对象已使用完了,应该主动将其设置为null,可以在上面的代码行obj.doSomething();下添加代码行obj=null;这样一行代码强制将obj对象置为空值,这样做的意义就是帮助JVM及时的发现这个垃圾对象,并且可以及时的回收该对象占用的系统资源。

  4.不可到达阶段:

  处于不可到达阶段的对象,在虚拟机所管理的对象引用根集合中再也找不到直接或间接的强引用,这些对象通常是指多有线程栈中的临时变量,所有已装载的类的静态变量或者对本地代码接口(JNI)引用。

  5.可收集阶段、终结阶段与释放阶段:

  当对象处于这个阶段的时候,可能处于下面三种情况:

  (1)垃圾回收器发现该对象已经不可到达。

  (2)finalize方法已经被执行。

  (3)对象空间已被重用。

  当对象处于上面三种清空的时候,虚拟机就可以直接将该对象回收了。

  好了,总算写完了。希望对大家有益。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号