为什么Java提供垃圾收集?

时间:2013-11-17 18:08:44

标签: java

我知道在任何语言中都需要内存释放。但java提供了它并使编程人员免于内存解除分配的担忧。

现在,我收集的是,只有java提供垃圾收集机制的好处是,程序员的开销减少了。但是JVM的开销增加了。

我怀疑这是java垃圾收集的唯一好处还是我错过了其他一些观点?

2 个答案:

答案 0 :(得分:2)

从理论上讲,你对程序员开销减少的断言是“正确的”,但我认为你低估了良好的内存管理在“手动”收集语言(如C等)中所付出的努力程度。不仅仅是纪律数量需要确保释放所有malloc内存,但是当出现问题时,需要花费大量时间来调试内存泄漏等。

现实生活中的比喻很好.....

如果我们都必须自行清理废物(污水,垃圾等),那该怎么办?当然,我们可以做到这一点,但让人们到我们家里捡起它,正确回收它等等不是很好。

答案 1 :(得分:1)

  
      
  • 首先,它可以提高你的工作效率。使用非垃圾收集语言编程时,您可以花费很多时间(或几天或几周)来追逐难以捉摸的内存问题。使用Java进行编程时,您可以通过提前或仅仅回家过上更有利的时间来利用这段时间。

  •   
  • 垃圾收集的第二个优点是它有助于确保程序的完整性。垃圾收集是Java安全策略的重要组成部分。 Java程序员无法通过错误地释放内存而意外(或故意)使Java虚拟机崩溃。

  •   
     

垃圾收集堆的一个潜在缺点是它增加了可能影响程序性能的开销。 Java虚拟机必须跟踪执行程序正在引用哪些对象,并在运行中最终确定并释放未引用的对象。如果程序明确释放不必要的内存,此活动可能需要比计划所需的CPU时间更多的CPU时间。此外,垃圾收集环境中的程序员对用于释放不再需要的对象的CPU时间调度的控制较少。

source.