码迷,mamicode.com
首页 > 编程语言 > 详细

Java内存分配机制

时间:2019-04-03 12:51:26      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:永久   img   font   地方   string   http   时间   vivo   www   

内存分配,主要指的是在上的分配,

一般的,对象的内存分配都是在堆上进行,但现代技术也支持将对象拆成标量类型(标量类型即原子类型,表示单个值,可以是基本类型或String等),然后在栈上分配,在栈上分配的很少见,我们这里不考虑。

Java内存分配和回收的机制概括的说,就是:分代分配,分代回收

对象将根据存活的时间被分为:年轻代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法区)。

如下图(来源于《成为JavaGC专家part I》,http://www.importnew.com/1993.html):

技术图片

年轻代(Young Generation):对象被创建时,内存的分配首先发生在年轻代(大对象可以直接 被创建在年老代),大部分的对象在创建后很快就不再使用,因此很快变得不可达,于是被年轻代的GC机制清理掉(IBM的研究表明,98%的对象都是很快消 亡的),这个GC机制被称为Minor GC或叫Young GC。注意,Minor GC并不代表年轻代内存不足,它事实上只表示在Eden区上的GC。

年轻代上的内存分配是这样的,年轻代可以分为3个区域:Eden区(伊甸园,亚当和夏娃偷吃禁果生娃娃的地方,用来表示内存首次分配的区域,再 贴切不过)和两个存活区(Survivor 0 、Survivor 1)。内存分配过程为(来源于《成为JavaGC专家part I》,http://www.importnew.com/1993.html):

Java内存分配机制

标签:永久   img   font   地方   string   http   时间   vivo   www   

原文地址:https://www.cnblogs.com/qianjinyan/p/10647773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!