当对象判定为"已死"状态,虚拟就要采取一定的手段将这些对象从内存中移除,即回收垃圾,回收过程有采用一定的算法。如下是一些主要的垃圾收集算法:
1.标记-清除算法
该算法是最基础的算法,分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所有说它是最基础的算法是因为后续的收集算法都是基于这种思路并对其缺点进行改进得到的。它的缺点主要有两个...
分类:
编程语言 时间:
2014-12-09 10:37:18
阅读次数:
191
评论区留下邮箱可获得《Java多线程设计模式详解》
转载请指明来源
1)后台线程
后台线程是为其他线程服务的一种线程,像JVM的垃圾回收线程就是一种后台线程。后台线程总是等到非后台线程死亡之后,后台线程没有了服务对象,不久就会自动死亡,不再复活。利用setDaemon方法可以把一个线程设置为后台线程,但必须在线程启动之前调用。
例如 :
/*
* @author w...
分类:
编程语言 时间:
2014-12-09 09:21:41
阅读次数:
299
在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。 PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候...
分类:
编程语言 时间:
2014-12-08 22:38:30
阅读次数:
207
野指针,又称迷途指针,即指向“垃圾”内存的指针。此时指针指向的内存已被操作系统回收,程序已无法再访问。...
分类:
其他好文 时间:
2014-12-08 21:31:46
阅读次数:
172
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note4.html,转载请注明源地址。1、对象初始化和回收对象初始化系统在生成对象时,会为对象分配内存空间,并自动调用构造方法对实例变量进行初始化对象回收对象不再使用时,系统会调用垃圾回收程序将...
分类:
编程语言 时间:
2014-12-08 13:48:10
阅读次数:
289
在前面一文中,我们分析了Dalvik虚拟机创建Java堆的过程。有了Java堆之后,Dalvik虚拟机就可以在上面为对象分配内存了。在Java堆为对象分配内存需要解决内存碎片和内存不足两个问题。要解决内存碎片问题,就要找到一块大小最合适的空闲内存分配给对象使用。而内存不足有可能是内存配额用完引起的,也有可能是垃圾没有及时回收引起的,要区别对待。本文就详细分析Dalvik虚拟机是如何解决这些问题的。...
分类:
其他好文 时间:
2014-12-08 02:05:17
阅读次数:
250
判断哪些对象可回收GC是通过对象是否存活来决定是否进行回收,判断对象是否存活主要有两种算法:引用计数算法、可达性分析算法引用计数算法引用计数的算法原理是给对象添加一个引用计数器,每被引用一次计数器加1,引用失效时减1,当计数器0后表示对象不在被引用,可以被回收了,引用计数法简单高效,但是存在对象之间...
分类:
其他好文 时间:
2014-12-07 21:31:01
阅读次数:
188
进程:正在执行的应用程序。一个应用程序运行时内存分配的空间。线程:进程中一个程序执行的控制单元,一条执行路径。负责程序的执行顺序。多线程存在的意义: 程序运行中至少有两个线程在运行,一个是主函数的主线程,另一个是垃圾回收的线程。线程创建方式一:继承Thread类.要覆盖其run方法,调用线程的sta...
分类:
编程语言 时间:
2014-12-06 16:44:47
阅读次数:
198
如果说sepl.net 1.0是让器普语言.net化。支持虚拟机、垃圾内存回收,.net类库等,让sepl功能大放异彩。
sepl2.0恢复英文关键字则是sepl语言国际化战略的组成部分,并且更加完善中文化,可以彻底中文编程,并成为世界通用计算机语言。
sepl3.0则是更进一步。
1.sepl3.0可以把代码编译链接成二进制程序,可以脱离.net独立运行。目前mono就能做到,这样...
分类:
编程语言 时间:
2014-12-06 14:09:36
阅读次数:
279
这是“成为Java GC专家”系列的第五篇文章。在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同的GC算法流程、GC的工作原理、新生代(Young Generation)和老年代(Old Generation)的概念。你应该了解了J...
分类:
编程语言 时间:
2014-12-05 19:51:33
阅读次数:
325