compiler之automatic memory management以及Java GC

原创 2015年11月17日 16:20:23

基本方案就3种

1) mark and sweep

2) stop and copy (会用到copy graph算法,见leetcode)

3) reference counting

前2种方案GC是一个是独立的过程,要先进行扫描(object graph 遍历)mark reachable object,然后进行sweep或者copy。引用计数是即时的,当一个object的RC变为0时候立刻回收。一个赋值语句 a = b;对应4条语句

RC(b) += 1

RC(a) -= 1

if (RC(a) == 0)  //de-allocate  the object a points to

a = b

另外,当一个对象被销毁时候也会更新它指向对象的 RC

比较一下 sweep 和 copy

1) sweep 是把unmarked的对象加入到 free list,会有碎片问题;copy是把reachable对象copy到另一个区域

2) copy需要把存储区分成2个区域;sweep不需要

3) 分配:sweep需要scan free list找到大小匹配的块;而copy则只需要从当前指针分配并推进指针,速度块


generation based GC :解决这样一个问题:每次全体扫描,很多对象一直都是reachable的,对这些对象的扫描是浪费的。所以更针对一些,把对象分为长对象和短对象,主要针对短对象扫描,长对象的扫描不需要那么频繁


GC也是程序,可以从一般程序的角度衡量

和主程序的关系角度:

Concurrent GC:通过一定的协调机制可以让GC和程序并发运行。而一般GC 是要stop the world

从单线程多线程角度:

Parallel GC:多个Garbage Collector一起工作,利用多核,GC本身也可以是多线程。


Java GC

基本是基于copy + 分代, Permanent Space是固定的放class的地方,实际就是2代,不过第一代内部又分里3个小代,

Eden 

1st Survivor 

2nd Survivor




版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle 11g Automatic Memory Management

In 11g, Oracle database manages the PGA and SGA by default. memory_target decides the overall memory...
  • chncaesar
  • chncaesar
  • 2013年12月15日 00:10
  • 1437

QUESTION 56 Automatic Shared Memory Management is disabled for your database instance. You realize t

QUESTION 56 Automatic Shared Memory Management is disabled for your database instance. You realize t...
  • EVISWANG
  • EVISWANG
  • 2016年01月13日 18:44
  • 619

OCP-1Z0-053-V12.02-494题

494.Which statement about Automatic Memory Management with Oracle 11g is true? A. You cannot specif...
  • rlhua
  • rlhua
  • 2013年10月09日 11:09
  • 4392

Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework

Garbage Collection: Automatic Memory Management in the Microsoft...
  • bright60
  • bright60
  • 2007年12月02日 13:29
  • 702

OCP-1Z0-052-V8.02-57题

57. Automatic Shared Memory Management is disabled for your database instance. You realize that ther...
  • rlhua
  • rlhua
  • 2013年10月12日 11:01
  • 11426

8.4 Automatic memory management

8.4 Automatic memory managementManual memory management requires developers to manage the allocation...
  • masterall
  • masterall
  • 2005年11月28日 22:15
  • 577

OCP-1Z0-053-V12.02-640题

640.Examine the parameter setting in your database: Which statement is correct about the data...
  • rlhua
  • rlhua
  • 2013年10月09日 10:31
  • 4788

54.Automatic Shared Memory Management (ASMM) has been enabled for your database instance. The initia

54.Automatic Shared Memory Management (ASMM) has been enabled for your database instance. The initia...
  • dwj19830118
  • dwj19830118
  • 2016年07月23日 22:03
  • 338

OCP-1Z0-053-V12.02-420题

420.Automatic PGA Memory Management eliminates the need to manually configure which of the following...
  • rlhua
  • rlhua
  • 2013年11月11日 16:38
  • 5507

57.Automatic Shared Memory Management is disabled for your database instance. You realize that there

57.Automatic Shared Memory Management is disabled for your database instance. You realize that there...
  • dwj19830118
  • dwj19830118
  • 2016年07月23日 23:30
  • 590
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:compiler之automatic memory management以及Java GC
举报原因:
原因补充:

(最多只允许输入30个字)