在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

2016Java面试题精编版—内存管理

2016-12-16 13:10| 发布者: zhangjf| 查看: 485| 评论: 0

摘要:   面试题:Java是如何管理内存的?   答案:Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间,所有的对象在堆中分配空间。另外,对象的释放是有GC决定和执行 ...
   
  面试题:Java是如何管理内存的?
  答案:Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间,所有的对象在堆中分配空间。另外,对象的释放是有GC决定和执行的。在Java中,内存的分配是由程序完成的。而内存的释放室友GC完成的,这种收支两条线的方法确实简化了程序员的工作。但同时,它也加重了JVM的工作。这也是Java程序运行速度较慢的原因之一。因为GC为了能够正确释放对象,必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。
  监视对象状态是为了更加准确、及时地释放对象,而释放对象的根本原则就是该对象不再被引用。
  为了更好的理解GC的工作原理,我们可以将对象考虑为有向图的顶点,将引用关系考虑为图的有向边,有向边从引用者指向被引用对象。另外,每个线程对象可以作为一个图的起始顶点,例如,大多程序从main进程开始执行,那么该图就是以main进程顶点开始的一棵根树。在这个有向图中,根顶点可达的对象都是有效对象,GC将不回收这些对象。如果某个对象与这个根顶点不可达,那么我们认为这个对象不再被引用,可以被GC回收。
  

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-7 18:08

Copyright 2015-2025 djqfx

返回顶部