本文目录一览

1,如何理解NET中的垃圾回收机制

NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不用的内存的。已释放内存,重新使用。 详情参考: http://blog.csdn.net/tanliyoung/archive/2006/12/20/1450802.aspx

如何理解NET中的垃圾回收机制

2,什么是编程语言的垃圾回收机制

要理解什么是垃圾回收机制,首先要对内存管理概念有一个基本的认识。内存管理是指操作系统如何进行内存的分配和回收的机制。早期的计算机语言,比如C, 它通过malloc, free函数来向操作系统请求内存和释放内存。 这种机制的优点是内存分配和释放的效率很高。但是它也有着它的缺点,主要表现在对于复杂的系统,存在着大量的内存分配和释放操作。程序员很容易不小心忘记释放内存,从而造成内存的泄露,对于长期运行的软件来讲,这将是一个致命的威胁,因为系统的内存会逐渐被吃光。 因此,更新的编程语言,比如JAVA, C#, 都提供了所谓“垃圾回收的机制”,运行时自身会运行相应的垃圾回收机制。程序员只需要申请内存,而不需要关注内存的释放。垃圾回收器(GC)会在适当的时候将已经终止生命周期的变量的内存给释放掉。GC的优点就在于它大大简化了应用层开发的复杂度,降低了内存泄露的风险

什么是编程语言的垃圾回收机制

3,主流的垃圾回收机制都有哪些

跟踪回收  跟踪回收的方式独立于程序,定期运行来检查垃圾,需要较长时间的中断。  标记清除  标记清除的方式需要对程序的对象进行两次扫描,第一次从根(Root)开始扫描,被根引用了的对象标记为不是垃圾,不是垃圾的对象引用的对象同样标记为不是垃圾,以此递归。所有不是垃圾的对象的引用都扫描完了之后。就进行第二次扫描,第一次扫描中没有得到标记的对象就是垃圾了,对此进行回收。  复制收集  复制收集的方式只需要对对象进行一次扫描。准备一个「新的空间」,从根开始,对对象进行扫,如果存在对这个对象的引用,就把它复制到「新空间中」。一次扫描结束之后,所有存在于「新空间」的对象就是所有的非垃圾对象。
java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

主流的垃圾回收机制都有哪些

4,该怎么理解垃圾回收机制JavaNET都行

gc即垃圾回收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。  在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了避免垃圾收集中断,而大多数OLTP应用程序则注重整体效率。理解了应用程序的工作负荷和jvm支持的垃圾收集算法,便可以进行优化配置垃圾收集器。  垃圾收集的目的在于清除不再使用的对象。gc通过确定对象是否被活动对象引用来确定是否收集该对象。gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。
理解垃圾回收,首先要先理解没有垃圾回收的时候是怎么做的。就像要真正了解abs的作用,首先要开一开没有abs的车子是一样的道理。没有垃圾回收的时代,动态分配的内存都需要程序员手动的进行回收。比如c语言时代,动态分配堆内存一般使用malloc()函数,而回收内存使用free()函数。在c++时代,动态分配堆内存一般使用new关键字,而回收内存使用delete关键字。这就让程序员在分配内存的时候要万分小心,一定要在某个地方释放,否则,申请的内存越来越多没有释放,能够使用的内存就越来越少了,这就是内存泄露(memory leak)。java引进了垃圾回收,对程序员来讲,就不需要将new出来的堆内存进行回收,回收工作由专门的线程来做。大大减轻了程序员的工作强度。但缺点也是明显的,也就是失去了对内存进行精确控制的机会了。有利必有弊。不过在内存是白菜价的今天,内存的精确控制也没有那么重要了。.net则是借鉴了java的内存回收机制。

5,java什么是垃圾回收机制

1、回收的内容是new出来的对象所占内存;2、垃圾回收只与内存有关,清理内存外的资源依靠finalize()方法。垃圾回收机制在回收某个对象的内存前会调用该对象的finalize()方法。3、强制系统垃圾回收的方式(通过程序通知系统进行垃圾回收,但系统还不一定进行垃圾回收):System.gc();Runtime.getRuntime().gc();4、垃圾回收以单独的线程在后台运行,为减少虚拟机额外消耗,一般在内存不足时会进行垃圾回收,所以就算强制系统垃圾回收,垃圾回收也不一定发生;5、对象在内存中的状态有可达状态、可恢复状态、不可达状态,当处于可恢复状态时可能会进行垃圾回收。
gc()是随机回收垃圾的,谁也无法预料它到底什么时候来。 给你写个例子看看那 public class testfinalize{ public static void main(string[] args){ while(true){ teacher tea = new teacher("robin",30); // teacher tea1 =new teacher("j"); system.gc(); //runtime.getruntime().gc(); } } } class teacher{ string name; int age; public teacher(string name,int age){ this.name = name; this.age = age; system.out.println("一个老师站起来====="); } @override public void finalize(){//gc回收teacher类的对象tea时调用的方法 system.out.println("一个老师倒下去"); } }

6,Java垃圾回收机制是什么

垃圾是指:无用的对象或者引用 回收:清除其所占内存 机制:自动发生或(gc())
垃圾回收机制 垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。 如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收
JVM的垃圾回收机制详解和调优 几种垃圾回收机制 标记-清除收集器 这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并释放它们的内存。这种收集器一般使用单线程工作并停止其他操作。 标记-压缩收集器 有时也叫标记-清除-压缩收集器,与标记-清除收集器有相同的标记阶段。在第二阶段,则把标记对象复制到堆栈的新域中以便压缩堆栈。这种收集器也停止其他操作。 复制收集器 这种收集器将堆栈分为两个域,常称为半空间。每次仅使用一半的空间,jvm生成的新对象则放在另一半空间中。gc运行时,它把可到达对象复制到另一半空间,从而压缩了堆栈。这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率降低。 增量收集器 增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾。这会造成较小的应用程序中断。 分代收集器 这种收集器把堆栈分为两个或多个域,用以存放不同寿命的对象。jvm生成的新对象一般放在其中的某个域中。过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中。分代收集器对不同的域使用不同的算法以优化性能。 并发收集器 并发收集器与应用程序同时运行。这些收集器在某点上(比如压缩时)一般都不得不停止其他操作以完成特定的任务,但是因为其他应用程序可进行其他的后台操作,所以中断其他处理的实际时间大大降低。 并行收集器 并行收集器使用某种传统的算法并使用多线程并行的执行它们的工作。在多cpu机器上使用多线程技术可以显著的提高java应用程序的可扩展性。
一些没用的对象,JVM自动帮你回收,不像C++一样要自己手动释放。JAVA方便

文章TAG:垃圾  垃圾回收  回收  机制  垃圾回收机制  
下一篇