钢铁小说网

手机浏览器扫描二维码访问

第189章 (第1页)

5、堆和栈的区别

栈是运行时单位,代表着逻辑,内含基本数据类型和堆中对象引用,所在区域连续,没有碎片;堆是存储单位,代表着数据,可被多个栈共享(包括成员中基本数据类型、引用和引用对象),所在区域不连续,会有碎片。

1、功能不同

栈内存用来存储局部变量和方法调用,而堆内存用来存储Java中的对象。

无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。

2、共享性不同

栈内存是线程私有的。

堆内存是所有线程共有的。

3、异常错误不同

如果栈内存或者堆内存不足都会抛出异常。

栈空间不足:java.lang.StackOverFlowError。

堆空间不足:java.lang.OutOfMemoryError。

4、空间大小

栈的空间大小远远小于堆的。

6、什么时候会触发FullGC

除直接调用Systegc外,触发FullGC执行的情况有如下四种。

旧生代空间不足

旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行FullGC后空间仍然不足,则抛出如下错误:

java.lang.OutOfMemoryError:Javaheapspace

为避免以上两种状况引起的FullGC,调优时应尽量做到让对象在MinorGC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组。

PermanetGeneration空间满

PermanetGeneration中存放的为一些class的信息等,当系统中要加载的类、反射的类和调用的方法较多时,PermanetGeneration可能会被占满,在未配置为采用CMSGC的情况下会执行FullGC。

如果经过FullGC仍然回收不了,那么JVM会抛出如下错误信息:

java.lang.OutOfMemoryError:PermGenspace

为避免PermGen占满造成FullGC现象,可采用的方法为增大PermGen空间或转为使用CMSGC。

CMSGC时出现promotionfailed和concurrentmodefailure

对于采用CMS进行旧生代GC的程序而言,尤其要注意GC日志中是否有promotionfailed和concurrentmodefailure两种状况,当这两种状况出现时可能会触发FullGC。

promotionfailed是在进行MinorGC时,survivorspace放不下、对象只能放入旧生代,而此时旧生代也放不下造成的;concurrentmodefailure是在执行CMSGC的过程中同时有对象要放入旧生代,而此时旧生代空间不足造成的。

应对措施为:增大survivorspace、旧生代空间或调低触发并发GC的比率,但在JDK5.0+、6.0+的版本中有可能会由于JDK的bug29导致CMS在remark完毕后很久才触发sweeping动作。

对于这种状况,可通过设置-XX:CMSMaxAbortablePrecleanTime=5(单位为ms)来避免。

统计得到的MinorGC晋升到旧生代的平均大小大于旧生代的剩余空间

这是一个较为复杂的触发情况,Hotspot为了避免由于新生代对象晋升到旧生代导致旧生代空间不足的现象,在进行MinorGC时,做了一个判断,如果之前统计所得到的MinorGC晋升到旧生代的平均大小大于旧生代的剩余空间,那么就直接触发FullGC。

例如程序第一次触发MinorGC后,有6MB的对象晋升到旧生代,那么当下一次MinorGC发生时,首先检查旧生代的剩余空间是否大于6MB,如果小于6MB,则执行FullGC。

当新生代采用PSGC时,方式稍有不同,PSGC是在MinorGC后也会检查,例如上面的例子中第一次MinorGC后,PSGC会检查此时旧生代的剩余空间是否大于6MB,如小于,则触发对旧生代的回收。

除了以上4种状况外,对于使用RMI来进行RPC或管理的SunJDK应用而言,默认情况下会一小时执行一次FullGC。

可通过在启动时通过-java-Dsun.rmi.dgclient.gcInterval=来设置FullGC执行的间隔时间或通过-XX:+DisableExplicitGC来禁止RMI调用Systegc。

7、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”

Java虚拟机是一个可以执行Java字节码的虚拟机进程。

Java源文件被编译成能被Java虚拟机执行的字节码文件。

Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。

Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

喜欢带着游戏账号流浪请大家收藏:()带着游戏账号流浪

请关闭浏览器阅读模式后查看本章节,否则将出现无法翻页或章节内容丢失等现象。

热门小说推荐
变成懒羊羊,处处惹人爱

变成懒羊羊,处处惹人爱

穿越进动漫世界的陆言以懒羊羊的身体,混迹在羊羊们身边,本来只想在羊村摆烂,一场意外,来到充满诡怪的世界,只想开个烧烤店,竟接二连三遇到动漫世界的主角团懒羊羊竟然看上了柯南的女友小兰,喜羊羊不干了!小新看上长相甜美的美羊羊,为她献舞,光头强吃醋了。沸羊羊夸小葵可爱,美伢可不乐意了。赵琳喜欢熊猫花花,光头强和小新不开...

斗战胜凰

斗战胜凰

顾明颜我不信善有善报,我只知人善被人欺,既如此,我为何要善!倾君你还真是仗着我爱你,为所欲为的欺负我。薄修言既得不到便毁了她,无法相爱,相杀也不错。她是一心要坐上凤国凤椅的公主。他是能预见未来,洞察天机的异眸者。他是凉国交与凤国的质子。当她们三人遇见,碰撞出的却不是儿女情长,而是天下大乱!...

农家福妻娇又美

农家福妻娇又美

(双洁宠文,孩子是男主养女)美食主播沈青橙睁开眼成了被继母二十两银子卖给流放犯的可怜虫。不怕,咱有厨艺在手。炸鸡,炸串,披萨,汉堡配可乐。饭团,寿司,米糕,菠萝饭,不好吃不要钱。麻辣小龙虾,火焰鱼,麻辣香锅,走过路过不要错过。说她夫君是废物,丑八怪?盛世美颜,一米八八身高,八块腹肌,隔空打老虎了解下。说别人生的孩子...

八零:替嫁残疾糙汉后,我真香了

八零:替嫁残疾糙汉后,我真香了

双重生先婚后爱甜宠文前世,她对父母言听计从,换来的却是父母姐姐一步一步的算计,生无可恋的她只想为女儿多活几天,却被告知他为了她一生未娶。她怨过恨过,最后却还是为了让他活下来,拖着病恹恹的身体去看他,最后死在他的病床前。她想能死在他身边便是上天赐予她最美的礼物,却不想上天还赐予了她一份天大的礼物。她竟然重生了,重生回到和他离婚那天。这一世,她毫不犹豫的与娘家断绝关系。这一世,她选择紧紧抓住他,为自己,也为两个孩子。这一世,她勤劳致富奔小康,努力让自己更优秀。这一世,她不只是想得到他的人,还想得到他的心。在她努力让自己配得上他,在她努力策划怎么偷走他的心时才发现他早就把心给了她。是什么时候的事情呢?是她毫不犹豫嫁给他时。是她在命不久矣还来见他时。是无数个夜深人静时,悄悄将她拥入入怀时。是发现她的秘密,拥着她低声说小媳妇你露馅了,时。...

淡定王后不争宠:囚在龙榻要休书

淡定王后不争宠:囚在龙榻要休书

什么?因为王位之争,王兄就要强了弟媳?有么有搞错哦!更可怕的是,身为弟媳的她居然甩了英俊潇洒温柔体贴的老公,跟了这个残暴无情的无赖王上,甘心成了他的玩物,被他囚在了龙榻之上?OMG。。。。详细介绍...

星河梦想

星河梦想

陈飞扬与神秘美少女桑语儿在学校废弃的旧仓库,建造了一具全宇宙最优秀的战甲从此,传奇拉开序幕,梦想开始起航!======绚烂的机械战甲丰富的新旧武学浩荡的星河战争亲情友情和爱情热血牺牲和荣耀。尽在蒙白星河梦想!...

每日热搜小说推荐