无处不抽象,从JVM内存管理想到的

最近刚换了个东家,因为项目扩容需求,须要作分布式部署和各类性能调优以应对大规模并发,Tou说都没啥经验,索性把这个任务就交给我这个闲人作了,让我给出可行性方案,正好我一直就手痒痒想去搞搞分布式用到的东东,集群、热备、缓存、性能调优、数据库master/slave我就这样来了,不信搞不死你,大家不死我也得活O(_)O哈哈~web

先从JVM说说,其余的待续数据库

太阳的JVM内存管理模型是谁抽象出来的呢,居然和公司的管理机制一模一样,不得不让我感叹一声,现实生活如此软件亦如此,一切皆为抽象..缓存

一句话归纳JVM管理策略并发

JVM把内存分三代【新生代{又包括eden区、幸存区}、旧生代、持久代】,而后各代就能够按照不一样的策略折腾了jvm

为啥说和公司管理机制像呢,个人分析以下:分布式

按照公司的管理机制我把21世纪最贵的东西—“人才”在公司的地位分为三类,新人区、中层区、高管区对比在JVM中的object存在的三个代,对好比下:性能

JVM管理机制学习

公司管理机制spa

新生代设计

JVM新生代分为eden区和幸存区

Eden直译过来就是伊甸园,创造生命的地方,一般新建立的一个对象都会放在这里,生命力强而且走运的就进入了幸存区,若是幸存区里生命力仍是很强,那通过不停的折磨后就有机会进入旧生代,过上幸福日子,不然就夭折了,到此game over.可是若是这个object占用内存空间很大,新生代作了垃圾回收(minor gc)以后仍是放不下它,JVM就直接把它放进旧生代,若是旧生代仍是放不下,那就说明系统设计不合理了,致使内存溢出。

新人区

一般一个运做相对成熟的公司招聘来的新人(对应jvm中的object)不会直接放到举足轻重的部门,须要有个试用的过程,能力不错滴、听话的、禁得住蹂躏地好同志能够混过试用期继而进入中层区(对应JVM旧生代)过上相对稳定的生活,固然也不乏NB份子(对应JVM建立的大对象),譬如其自身能力突出又有个大名鼎鼎的李刚老子,那确定要走捷径了,能够直接进入中层区,若是中层区容不下这小子,那公司确定会有麻烦滴,高管层确定会高度重视,不然会出乱子的。

旧生代

能进入这个区的objcet,基本上都是生命特征比较明显的.进了这个区并不意味着能够一劳永逸了,major GC仍是照样会蹂躏你的,只是不会像对待新生代那样的频繁,可是还会进行优胜劣汰

中层区

新人可以进入中层区,至少说明已通过了试用期成为了所谓的“老人或正式员工”,可是照样要遵循公司的管理制度,为了生活还须要不断学习保持进步,不然迟早会被淘汰掉,这里只能说明是相对稳定

持久带

持久带存放JVM本身的反射对象,好比类对象和方法对象、jar包相关meta信息,须要JVM启动时把相关信息都初始化准备好,新生代、旧生代对象能够使用这里的资源,可是基本很难混到这里保持一劳永逸,这个区也会作垃圾回收(FullGC),一般会在旧生代空间不足时促发该操做。

高管区

能进入这个层的人若是公司不倒闭基本能够稳定了,要么是公司的BOSS级人物,要么是BOSS层助手(如财务、行政),BOSS层助手也须要为新人区和中层区服务,可是这里的职位一般很稳定,新人区和中层区很难挤到这里来,这里的利益划分一般是在公司成立之初就定好了滴

总结

不说也罢,每一个区都有本身的活法,你们懂的

相关文章
相关标签/搜索