JAVA内存模型和GC

   很感谢longdick博主的三篇文章.清晰,容易地了解了JAVA内存模型和GC.在此只是自己用自己的话复述一番!

   首先是JAVA内存模型。其实就是空间划分问题。WINDOWS硬盘的空间划分,大家都是很熟悉的,我觉得我使用习惯,无非是把一些东邪分门别类的存放罢了,但是总体结构来看,是个平行交错缠绕的概念。而LINUX呢,一颗树的划分!

   JAVA是如何来划分的呢?一:分类,依据对象的生命有:Young(年轻代) Tenured(终身代)在加上一个Perm(永久代)CLASS存放区。这个是大体上的分类,需要注意的是,在JAVA里面,它们都有各自的称谓,这个为的是你可以优调它们的大小比例,但是名称不是你说了算!

   分类好了,就引出了另一个问题。如何存放对象?这个就是人如其名了,刚NEW的就到YOUNG,等等。静态方面这个是严格的一一对应的了,是NEW就在NEW 区,绝对不会在别的地方!

  静态解决了,如何变化呢?JAVA的策略两个:一GC帮忙,二转移!转移那是很简单的,无非是先看看你空间够不够,够就向你转移罢了。但是注意的是:不是像我们一样可以毫无次序和规则的。转移顺序和像谁转移都是规定好了的!

  最麻烦的就是大概就是GC。为什么呢?因为GC是个实体,不像转移只是种策略,因此就在空间和时间上增加了复杂性!这个是非常有必要的,对我们的程序性能瓶颈有很大的影响!

  从它存在的实体来讲分两类即:分为Minor GC(次要GC)和 Major GC(主要GC)!那么它们怎么和程序共存和协作呢?三种方式:serial collector,parallel collector,concurrent collector 。其间,在运行期,我可以监控。但是最关心的应该是如何调节其影响!

  我这只是泛泛而谈,个人的一点理解而已!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值