备案域名购买

老域名出售,已备案域名查询,老域名注册,已备案域名交易,买老域名,二手老域名,出售老域名,上饶网站建设

主页 > 垃圾

垃圾回收器是如何工作的

如果你有过编程经验,知道把对象放在堆里是比较慢的,那么你自然就会认为Java把所有的东西都放在堆里的这种做法也一定是很慢的。但事实上垃圾回收器可以极大的提高创建对象的速度。第一次听到这种说法的时候,你可能会觉得有些奇怪——内存的释放怎么会对内存的分配有影响——但这就是JVM的工作方式,而且,Java在堆里分配内存的速度,可以同其他语言在栈里分配内存的速度相媲美。

举例来说,你可以把C++的堆理解成一个集装箱堆场,这里面的每个对象都要负责管理它自己那块地皮。过一段时间,这块地皮就会被空出来,并且重新投入使用。但是在一些JVM里面,Java的堆就有些不同了;它更像是一条每次分配新对象的时候会不断向前移动的传送带。因此,为对象分配内存会非常快。“堆指针”只是简单地向前面移动,所以实际上就同C++的栈的分配是一样的了。

标签:垃圾  回收器  如何  工作  zhushican发布于2014/8/14围观评论:0

Java里用户必须亲自清理垃圾

要想清理对象,用户必须在清理的时候调用一个清理方法。这听上去很简单,但却和C++的拆构函数在概念上有一些冲突。C++的对象都会被清除。或者说,对象都必须被清除。如果C++的对象是以本地的形式创建的(也就是说创建在栈里——Java是不可能做到的),那么用花括号关闭这个作用域的时候,对象就被清除了。如果对象是用new创建的,那么当程序员调用C++的delete运算符的时候(Java里面没有),就会调用对象的拆构函数了。如果C++的程序员忘了调用delete,那么拆构函数就永远也不会被调用,这样就留下了一个内存的漏洞,此外对象的其余部分也不会得到清理了。这种bug是很难察觉的,同时它也是让C++的程序员转向Java的一个重要原因。

标签:Java  用户  必须  亲自  清理  垃圾  zhushican发布于2014/8/14围观评论:0

回顶部