垃圾回收机制原理

Java垃圾回收机制Java的垃圾回收器要负责完成3件任务:分配内存、确保被引用的对象的内存不被错误回收以及回收不再被引用的对象的内存空间。垃圾回收是一个复杂而且耗时的操作。如果JVM花费过多的时间在垃圾回收上,则势必会影响应用的运行性能。一般情况下,当垃圾回收器在进行回收操作的时候,整个应用的执行是被暂时中止(stop-the-world)的。这是因为垃圾回收器需要更新应用中所有对象引用的实际内存地址。不同的硬件平台所能支持的垃圾回收方式也不同。比如在多CPU的平台上,就可以通过并行的方式来回收垃圾。而单CPU平台则只能串行进行。不同的应用所期望的垃圾回收方式也会有所不同。服务器端应用可能希望在应用的整个运行时间中,花在垃圾回收上的时间总数越小越好。而对于与用户交互的应用来说,则可能希望所垃圾回收所带来的应用停顿的时间间隔越小越好。对于这种情况,JVM中提供了多种垃圾回收方法以及对应的性能调优参数,应用可以根据需要来进行定制。Java 垃圾回收机制最基本的做法是分代回收。内存中的区域被划分成不同的世代,对象根据其存活的时间被保存在对应世代的区域中。一般的实现是划分成3个世代:年轻、年老和永久。内存的分配是发生在年轻世代中的。当一个对象存活时间足够长的时候,它就会被复制到年老世代中。对于不同的世代可以使用不同的垃圾回收算法。进行世代划分的出发点是对应用中对象存活时间进行研究之后得出的统计规律。一般来说,一个应用中的大部分对象的存活时间都很短。比如局部变量的存活时间就只在方法的执行过程中。基于这一点,对于年轻世代的垃圾回收算法就可以很有针对性。

年轻世代的内存区域被进一步划分成伊甸园(Eden)和两个存活区(survivor space)。伊甸园是进行内存分配的地方,是一块连续的空闲内存区域。在上面进行内存分配速度非常快,因为不需要进行可用内存块的查找。两个存活区中始终有一个是空白的。在进行垃圾回收的时候,伊甸园和其中一个非空存活区中还存活的对象根据其存活时间被复制到当前空白的存活区或年老世代中。经过这一次的复制之后,之前非空的存活区中包含了当前还存活的对象,而伊甸园和另一个存活区中的内容已经不再需要了,只需要简单地把这两个区域清空即可。下一次垃圾回收的时候,这两个存活区的角色就发生了交换。一般来说,年轻世代区域较小,而且大部分对象都已经不再存活,因此在其中查找存活对象的效率较高。而对于年老和永久世代的内存区域,则采用的是不同的回收算法,称为“标记-清除-压缩(Mark-Sweep-Compact)”。标记的过程是找出当前还存活的对象,并进行标记;清除则遍历整个内存区域,找出其中需要进行回收的区域;而压缩则把存活对象的内存移动到整个内存区域的一端,使得另一端是一块连续的空闲区域,方便进行内存分配和复制。JDK 5中提供了4种不同的垃圾回收机制。最常用的是串行回收方式,即使用单个CPU回收年轻和年老世代的内存。在回收的过程中,应用程序被暂时中止。回收方式使用的是上面提到的最基本的分代回收。串行回收方式适合于一般的单CPU桌面平台。如果是多CPU的平台,则适合的是并行回收方式。这种方式在对年轻世代进行回收的时候,会使用多个CPU来并行处理,可以提升回收的性能。并发标记-清除回收方式适合于对应用的响应时间要求比较 高的情况,即需要减少垃圾回收所带来的应用暂时中止的时间。这种做法的优点在于可以在应用运行的同时标记存活对象与回收垃圾,而只需要暂时中止应用比较短的时间。
通过JDK中提供的JConsole可以很容易的查看当前应用的内存使用情况。在JVM启动的时候添加参数 -verbose:gc 可以查看垃圾回收器的运行结果。

边疆行 20 普洱市 — 澜沧

云南省普洱市的澜沧拉祜族自治县,因临近澜沧江得名。
1
用彩虹迎接远道而来的《远方的家》边疆行摄制组,摄制组在澜沧的第一站选定的是酒井乡勐根村的老达保村民小组,因为这个传统的拉祜族村寨,竟然人人手里有把吉他。
村子里诞生的一首有名的歌曲:快乐拉祜
2
4
歌曲创作者
3
他们是怎样用西洋乐器诠释出天籁之音?同是拉祜族村寨,南岭乡的龙潭老寨使用的乐器却是藏起来的,他们是怎么用小小竹片演绎出儿女情长?
龙潭老寨的拉祜族居住的都是茅草屋
5
原始古老乐器
6
拉祜族原始乐器芦笙
7
芦笙舞(拉祜族民间舞蹈很多,都是和生活生产有关,有浓厚的生活气息)
8
这里的拉祜族人90%都不懂汉语,但是他们仍然用自己的音乐和自己的语言来表达他们的情感。
澜沧的景迈山因千年古茶园而享誉各地,千年古茶有什么分辨秘诀?
9
10
景迈山是中国6大茶山之一,有1800多年的历史,是世界上保存最好,年代最久,面积最大的人工栽培型古茶园
11
去茶园的路上经过古代的茶马古道(从云南普洱茶原产地出发的线路,国内线路全长3800多公里),旁边是后面修建的木板路,方便游人行走
12
古茶树
13
14
辨别是否古茶树的树枝(也叫螃蟹脚),是古茶树上一种比较稀少的草,只能在上百年的古茶树上找到,不但有清凉解毒的作用,经常饮用还可以防止血管硬化,市场上螃蟹脚可以卖到2000多一公斤
15
布朗族是一个茶的民族,
16
布朗族的酸茶,直接食用,茶叶采至古茶树,放入竹筒发酵
17
糯福乡里怎么会有欧美建筑?距离缅甸最近的阿里村老迈村民小组又有着什么奇特风俗,跟随边疆行的足迹,为您一一揭晓。
从阁楼的下面看是传统的拉祜族的杆栏式建筑,但是阁楼又有欧美风格
18
糯福乡的基督教堂,拉祜族的村民在里面做礼拜和唱诗
19
当地离缅甸最近的村落
20
老迈小组村的百家饭
21
拉祜族“赶紧吃”的意思
22

边疆行 19 西双版纳 — 勐海

我们远方的家边疆行摄制组所来到的西双版纳傣族自治州勐海县,位于云南省西南部、距西双版纳州府景洪市40公里,西部,南部与缅甸接壤,地处怒江山脉向南延伸的余脉部,境内地势四周高峻,中部平缓,气候非常凉爽,这里也被称为西双版纳的春城。
1
沿街都是茶叶店
2
勐海是“普洱茶”原产地之一,全县植茶面积17.4万亩。
3
勐海茶厂观看制茶流程:
4
5
勐海茶厂有两种茶是整个云南普洱茶的生产标准,分别是7572和7542,分别代表生茶和熟茶
6
打洛口岸:
7
8
打洛口岸对面的缅甸口岸
9
拜访农列村,找到缅甸傣族姑娘玉坎恩,了解缅甸人嫁过来后的一些生活(缅甸傣族中女的姓玉,男的姓岩(ai))
10
尝试割橡胶的快乐,橡胶给勐海人带来了客观的收入,种植橡胶的每个勐海人都有几百到上千颗橡胶树,每颗橡胶树每天割一次能挣1块钱,
11
中缅第一寨 “勐景来”:有着一千多年历史的古老村寨,寨子里面的人信奉南传上座部佛教
101座金塔组成的塔林,是打洛规模最大的
12
傣家菜肴:番茄南咪(将番茄和辣椒烤熟,然后一起充碎,加入盐,味精和香菜和傣族特有香料就完成了)
13
炸青苔,傣族人很喜欢吃的食物,把青苔从河边捞起来,洗干净后晒干,加入佐料做成饼状,然后油炸,可以粘各种酱来吃(傣家的菜都喜欢蘸着各种酱来吃):
14
家家户户门口都有一个小水缸,方便路人口渴了可以喝
15
原汁原味的傣族手工织布技术
16
主持人穿上傣族服饰
17
这里还有有“中缅第一寨”之称的勐景来傣族村寨。本期《边疆行》带您去体验魅力勐海!

边疆行18 西双版纳 — 景洪

被誉为柔情傣乡的西双版纳州府景洪市,景洪市位于云南省南部,西双版纳傣族自治州中部,坐落于澜沧江畔。初到景洪,我们摄制组的第一印象就是,这里是一个充满无限魅力的绿色天堂。因为它拥有享誉全球的大面积热带雨林,被誉为“动植物王国”、 “地球腰带上的一颗绿宝石”。这里江水长流,花开四季,街道纵横交错,环城公路宽阔平坦,街道两旁绿树成荫,一年四季都散发着热带的芬芳气息。即使在冬季,景洪仍然是处处葱绿,繁花似锦。
景洪市的位置
10
野象谷:
1
2
亚洲象培育中心, 通过保大夫(保大象)了解大象的生活
3
基诺山的基诺人,基诺山位于景洪市东部,基诺族是56个少数民族中的最后一个民族:
基诺族的意思是:舅舅的后代或者尊敬舅舅的民族,有自己的语言,但没有文字
4
基诺族的主要收入来源就是茶叶
5
基诺采茶的村民:
6
在树上采茶
7
采树上的酸蚂蚁蛋
8
凉拌茶叶蚂蚁蛋
9
景洪由于天气炎热,夏令时都是3天才开始上班上学
缅甸风情的美食城
缅甸特色美食:
14

13

12

11

15

制作缅甸美食帕露达
五颜六色的果冻香米,洒上炼乳,倒上牛奶和炸好的面包干,放一些新鲜的椰丝就完成了
16
缅甸装(像猫一样的化妆)
17
景洪夜市
18