`
eyesmore
  • 浏览: 378864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

技术人员也应懂艺术~~:不要把“老年代”叫成“Old Generation”

阅读更多

技术人员也应懂艺术~~:不要把“老年代”叫成“Old Generation”


JAVA GC为了针对不同存活率场景采用不同的算法进行高效回收,采取了分代策略,通常是:“新生代(Young Generation)”和“老年代(Tenured Generation)”。但是看比较多的文章时,总发现把老年代Tenured Generation说成Old Generation,我想命名者看到他的别具匠心被这么亵渎估计要彻底崩溃~~。新生代中的专门用作存放新生对象的场所被称作为“伊甸园(Eden)”就早已看得出命名者是很有品味的雅士。再有把经过Minor GC洗礼后,还没被回收的对象称为“幸存者(survivor)”,难道我们就没发现命名者在使用比喻吗?!如果我们把“老年代(Tenured Generation)”叫成“Old Generation”不觉得有点狗尾续貂的惭愧吗?!<br><br>
我多少时间都在寻思,为啥命名者会命名为Tenured Generation?为啥我们就喜欢说成Old Generation?今天我终于明白了,Tenure 就是为比喻而生的。<br><br>
Tenure为啥也是在比喻呢?这得说说Tenure这个词。<br><br>
1.    Thefreedictionary对Tenure的解释:http://www.thefreedictionary.com/tenure

tenure字典解释

 

第4个意思最适合这里的Tenured Generation,说的是:科教领域的一种雇佣制度,教师和科研工作者的一种权利,一种永久被雇佣的权利,永久到直到退休。再说,命名Tenured Generation的人是搞JVM的,老高深的玩意儿了,得是个科学家吧,科学家自然对科教领域的词汇比较有感情。<br><br><br><br>
2.    问世间Tenure为何物——美国大学管理体制: http://blog.163.com/prevBlogPerma.do?host=oliver_75&amp;srl=386285720062201020580&amp;mode=prev <br><br>
Thefreedictionary的解释还是有点晕晕的(为啥一开始整点英文呢,因为哥们对Tenure这个词都不宁得,这或许也是有些人把Tenured Generation说成Old Generation的原因吧,因为他们也不宁得~~),接着整点网友的解释:
问题1:

何为tenure


感情“Tenure”就是咱说的“铁饭碗”呀。咱不是说“铁饭碗”不利于社会进步么?为啥美国大学还整个“铁饭碗”制度呢?你得注意了,thefreedictionary说的是“科教领域”才有的“铁饭碗”制度,其他领域没有。那为啥科教领域就得有呢?它的积极意义在哪?<br><br>
问题2:<br>
除了“铁饭碗”,还有竞争制度,叫做“tenure-track”,“tenure-track”也被称做“up-or-out(要么晋升,要么出局)”,好个不进则退。了解到这,我仿佛有了招数怎么记住这个单词“Tenure”了,就是“特牛儿”(老外的很多单词也带儿化音的,注意了~~),我没想到美国文化跟中国文化有这么多想通的地方,那何不“特牛儿”的人,还不得“铁饭碗”。那“tenure-track”也自然明白了,要么你得“特牛儿”,要么他得“踹客”(晋升不了,没有贡献的,把你踹出门,滚蛋)。我咋这么有才呢?哎约妈呀,太有才! REFER: http://www.xici.net/d156572157.htm 大哥,您瞅这~~<br><br>

3、问题解答:tenure和tenure-track制度的积极意义
http://www.xici.net/d156572157.htm <br><br>
问题1的答案:

tenure积极意义


问题2的答案:<br>
  track音译


4、赏析JAVA GC中的“tenure generation”的比喻修辞手法
(1)公平竞争:tenure-track机制<br>
如何从young晋升到tenure?这玩意儿跟我们人类社会的晋升法则一样一样的。太有趣了!一般情况下,我们都从伊甸园(Eden Space)出生(GC 背景:Young generation=Eden+From Survivor+To Survivor=8+1+1; 为新生对象分配空间时候,首先从Eden和From分配),刚出生就要面临残酷的竞争,一不小心小命就没了,面对Minor GC的考验,等待我们的是两种命运(制度就是“tenure-track”):1、挂了,失业了,下岗了(没有引用指向你,说明你没有为社会做贡献,被GC回收); 2、幸存下来。幸存下来就意味着拿到“铁饭碗”了?咱不是发达国家,哪有那么好的福利,还得接受组织的进一步考验,一般你得经过15轮Minor GC的考验,如果你依然在竞争中立于不败之地,那么组织有理由相信你是“特牛儿”,进入Tenured Generation。<br><br>
我们除了感叹竞争的残酷,也在庆幸制度的公平,只要你能经受15次洗礼,你就能晋升,可见tenure-track制度还是很公平的。真的这么公平吗?如果这样,似乎跟人类社会不一样吧。的确,除了tenure-track机制外,还有两种机制在影响这JAVA对象世界的公平:1、机会主义,就是说你不能生不逢时,你得赶上好年头;2、特权主义,如果你是“富二代”,你就不用活得那么累了。<br><br>
(2)机会主义:得赶上好年头<br>
如果Eden+From=80+10,面对Minor GC考验的时候,只有不到10(含10)个人幸存下来,那么他们都进入To Survivor(有10个空间安置他们),继续接受后续的竞争。但是如果赶上好年头,收成好,大家都有饭吃,都没饿死,幸存者大于10个(不妨假设是68个),而To Survivor只能安置10个人,还有多余的58个没地方安置,发财了,不用再接受而外的14次考验了,直接晋级到Tenured Generation。很不公平呀,68个幸存者都只经受了1次考验,但是有的却需要继续接受考验,有的却直接晋级。这就是社会说:没有绝对的公平,只有相对的公平,我们给予没有晋级的人,只能安慰一句“真金不怕火炼,只要你是块金子,总会有发亮的时候”。或许,这句安慰的话能让很多失意之仕找到一个重头再来的理由,但是接下来的特权主义,估计得让他们愤愤不平。<br><br>
(3)特权主义:“富二代”<br><br>
有些人原来不用从伊甸园出生,伊甸园再好(有免费的水果吃的~~),毕竟是人间。有些出生就是耶和华的儿子,天生的“富二代”,财大气粗伊甸园容不下他们。“富二代”是:大对象,大到什么程度呢?我们假设有一个大对象byte[XXX],需要很多空间,多到Eden+from的没有空间可以装下它(这个是特例,其实只要大于+XX:PertenureSizeThreshold就构成“富二代”的条件了),只能/最好安置到tenured generation。<br><br>
(4)武装起义:OutOfMemoryError
Tenure-track虽然竞争残酷,但毕竟公平;机会主义,虽然有不公平之处,但毕竟大家都可能成为幸运者,即使没有成为幸运者,只要你真金不怕火炼也有出头之日。但特权主义,就因为你是富二代,你就直接tenured generation了,我靠,义愤填膺了。一场可能的起义正在逐渐酝酿……<br><br>
在愤怒的刺激下,越来越多的能人志士都经受起Minor GC的考验,要冲进 tenured generation,为此当局要作出妥协:招安。但tenured generation这个富丽堂皇的宫殿(或许应该叫食堂)就这么多“铁饭碗”,得淘汰一些,依然发挥余热对社会有贡献的,保留(毕竟有些“铁饭碗”是真有本事的),没有再为社会做贡献的得“退休”了(在Young Generation的垃圾被出局,叫“下岗”;在Tenured Generation的垃圾被出局,叫“退休”,以表示Minor GC和Major GC的垃圾回收算法不同,就跟咱的社会养老保险和公务人员退休两套体系是一样一样的)。<br><br>
如果当局的自我改革还是不能平息矛盾,那就只能崩溃了:OutOfMemoryError。<br><br><br>

 

  • 大小: 75 KB
  • 大小: 90.6 KB
  • 大小: 56.9 KB
  • 大小: 57.8 KB
2
0
分享到:
评论
2 楼 闯关东俊哥 2012-11-12  
好文章,顶一个
1 楼 NetBus 2012-02-10  
好文,分析得非常好。有利于理解gc

相关推荐

    svn: This client is too old to work with

    This client is too old to work with working copy 'D:\MyEclipseWorkspace\projectName\WebRoot\WEB-INF\lib'; please get a newer Subversion client. 估计是不经意中使用了1.6.5做了提交导致的问题。 官方...

    数据库自动备份.bat

    if not exist d:\数据库备份\OLD md d:\数据库备份\OLd if not exist d:\数据库备份\log md d:\数据库备份\log if exist D:\数据库备份\new_ylqfs%Date:~0,4%%Date:~5,2%%Date:~8,2%.dmp goto new goto export :...

    一次Jvm old过高的排查过程实战记录

    Jvm的内存结构可以分为年轻代(Young Generation)、老年代(Old Generation)和perm代(Permanent Generation)。年轻代是对象的诞生和成长的地方,老年代是对象的存储和老化的地方,perm代是存储类的元数据的地方...

    Java垃圾回收(二)老年代垃圾收集器(csdn)————程序.pdf

    本篇将详细讲解老年代垃圾收集器,主要包括SerialOld、ParallelOld以及CMS这三种常见收集器。 1. SerialOld收集器: SerialOld是Serial收集器的老年代版本,它采用单线程进行垃圾回收。这意味着在垃圾回收过程中,...

    DOS的命令文档

    使用`%str:old=new%`语法可以在字符串中进行替换操作,例如: - `set aa=ΰй爲院` - `echo滻ǰ%aa%` - `echo滻%aa:й=л͹%` - `set"aa=%aa:й=ล͹%"` - `echoaa=%aa%` 这段代码首先定义了一个字符串变量`aa`,...

    AE老电影效果插件(AgedFilm old film).rar

    AE老电影效果插件(AgedFilm old film)是款老电影效果插件,看上去有老旧照片的效果,有的时候我们会需要制作关于回忆录之类的短片,可是又苦于旧胶片旧电影的效果不好制作。现在不用担心了,这两款老电影效果的插件...

    How_Old.zip

    《探究“刷脸神器”——基于“How_Old.zip”的技术解析》 “刷脸神器”,这个令人好奇的软件,以其独特的功能吸引了众多用户的关注。它声称能够通过分析人脸图像,快速准确地揭示用户的真实年龄和性别。这一切都...

    old film插件

    "old film插件"是一款专为Adobe After Effects(AE)设计的特效插件,它能够帮助用户轻松地为视频添加复古、老旧的电影效果。在视觉表现上,这种效果通常包括褪色、划痕、噪点、闪烁、色彩偏移等元素,模拟出早期...

    windows.old 文件删除工具

    "Windows.old" 文件是Windows操作系统在进行重大更新或升级时创建的一个重要文件夹,它包含了上一个版本的系统文件和设置。这个文件夹的主要目的是在新版本系统出现问题时,为用户提供了回滚到旧版系统的可能性,以...

    【IT十八掌徐培成】Java基础第26天-02.jvm-young gen-old gen-eden-sur-jvisualvm-jconsole.zip

    JVM的内存分为新生代(Young Generation)和老年代(Old Generation)两大部分,用于存放不同生命周期的对象。年轻代主要负责快速回收短期存在的对象,而老年代则存储生命周期较长的对象。新生代又进一步细分为Eden...

    基于git版本管控,修改代码时生成new和old对比工具

    1、本工具利用python语言编写的,所传的资源是对应的python文件,里面的make_new_old函数可用于基于修改的代码生成new和old文件,对比修改; 2、make_new_old(gitdir,workdir,output),参数gitdir:git命令所在路径...

    Old-Lady-2048:2048 - 有老太太版

    #Old-Lady-2048 ###有一个老太太吞了苍蝇版 如果你不记得这里的韵脚是 飞——“也许她会死。” 蜘蛛——“那在她体内扭动、摇晃和挠痒痒。” 鸟——“多么荒谬。” 猫——“想象一下。” 狗——“真是个猪。” ...

    Howold 测试年龄

    "Howold"测试年龄的应用就是基于这样的技术,通过分析用户上传的照片,能够准确地识别出人脸并估算出对应的年龄。 首先,我们需要了解Face++ SDK的集成过程。这通常涉及以下几个步骤: 1. 注册和获取API密钥:在...

    java jvm-old gc耗时几十s,导致系统告警(csdn)————程序.pdf

    通常,Java的垃圾收集分为年轻代(Young Generation)和老年代(Old Generation)两个主要区域。年轻代用于存储生命周期较短的对象,而老年代则存放生命周期较长的对象。当年轻代的空间不足时,会触发Minor GC,清理...

    java虚拟机

    - 老年代(Old Generation) - 永久代(Permanent Generation) 当一个对象被创建时,它首先进入新生代,之后有可能被转移到老年代中。新生代存放着大量的生命很短的对象,因此新生代在三个区域中垃圾回收的频率...

    第6节: GC垃圾回收-02

    堆内存分为新生代(Young Generation)、老年代(Tenured Generation)和永久代( Perm Generation 或 Metaspace),不同代使用不同的垃圾回收策略。 ### **垃圾回收类型** 1. **Minor GC**:仅清理新生代。 2. **...

    JVM垃圾回收艺术

    然而,我们时常将“老年代(Tenured Generation)”错误地称为“Old Generation”。实际上,“Tenured”这个词在教育领域有着特殊的含义,它代表了一种稳定和保障,即教师和科研工作者的终身职位,一种“铁饭碗”。...

    old-release.zip

    《旧版本软件“old-release.zip”在文本编辑中的应用与探讨》 在信息技术日新月异的今天,软件更新迭代速度飞快,然而并非每个新版本都能满足所有用户的需求。有时候,旧版本的软件因其特有的稳定性和兼容性,仍然...

    Oldscript

    《Oldscript:探秘古老文字的艺术与技术》 在信息技术高度发达的今天,我们接触到的字体千变万化,从简洁的无衬线字体到华丽的衬线字体,每一种都承载着不同的视觉效果和情感传达。而"Oldscript",这个独特的字体...

Global site tag (gtag.js) - Google Analytics