游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

JVM参数设置及内存溢出

  JVM虚拟机参数设置及内存溢出
  之前写了一篇关于JVM专题的初步学习,这次来学习虚拟机的参数含义对性能的影响及内存溢出问题。上一篇补充栈上分配
  虚拟机提供的一种优化技术,基本思想是,对于线程私有的对象,将它打散分配在栈上,而不分配在堆上。好处是对象跟着方法调用自行销毁,不需要进行垃圾回收,可以提高性能。
  栈上分配需要的技术基础,逃逸分析。逃逸分析的目的是判断对象的作用域是否会逃逸出方法体。
  任何可以在多个线程之间共享的对象,一定都属于逃逸对象。
  下面是测试代码Author:非鸽传书Date:202172820:16Description:VM配置serverXmx10mXms10mXX:DoEscapeAnalysisXX:PrintGCXX:EliminateAllocationsXX:UseTLABserverJVM运行的模式之一,server模式才能进行逃逸分析,JVM运行的模式还有mixclientXmx10m和Xms10m:堆的大小XX:DoEscapeAnalysis:启用逃逸分析(默认打开)XX:PrintGC:打印GC日志XX:EliminateAllocations:标量替换(默认打开):是否允许XX:UseTLAB关闭本地线程分配缓冲TLAB:ThreadLocalAllocBuffer,线程本地分配缓存,事先在堆中开辟线程内存。(虚拟机在分配对象的时候也涉及到加锁,开启这个可以增加分配的效率。注意这里是在堆中所以其他线程仍然是可以访问这部分内存的)publicclassStackAllocatTest{publicstaticclassUser{publicintid0;publicStringname;}publicstaticvoidallocUser(){UserunewUser();u。id1;u。name非鸽传书;}publicstaticvoidmain(String〔〕args){longbeginSystem。currentTimeMillis();for(inti0;i1000000000;i){allocUser();}longendSystem。currentTimeMillis();System。out。println(endbegin);}}分别开启和关闭逃逸分析后对比程序运行时间及GC次数
  栈上分配发生影响的参数就是三个,server、XX:DoEscapeAnalysis和XX:EliminateAllocations,任何一个发生变化都不会发生栈上分配。另外jdk1。8默认是开启栈上分配的。对象分配
  执行new指令:执行类加载过程为新生对象分配内存。为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离,这种分配方式称为指针碰撞。Java堆中的内存并不是规整的,已使用的内存和空闲的内存相互交错,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称为空闲列表处理多线程问题方式采用CAS配上失败重试的方式保证更新操作的原子性另一种是把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块私有内存,也就是本地线程分配缓冲(ThreadLocalAllocationBuffer,TLAB)对象内存布局:
  对象头(Header)对象自身的运行时数据如hash码锁状态偏向锁id等等类型指针,指向对象类可以通过这个找到是属于哪个类的实例
  实例数据(InstanceData):程序代码中所定义的各种类型的字段内容
  对齐填充:虚拟机占位。在Hotspot中要求对象大小必须是8个字节的整数倍。参数含义及参数设置栈:
  Xss调整大小,例如Xss256k堆:Xms:堆的最小值
  Xmx:堆的最大值;
  Xmn:新生代的大小;
  XX:NewSize;新生代最小值;
  XX:MaxNewSize:新生代最大值;方法区永久代jdk1。7及以前:XX:PermSize;XX:MaxPermSize;
  jdk1。8以后:XX:MetaspaceSize;XX:MaxMetaspaceSize
  jdk1。8以后大小就只受本机总内存的限制
  如:XX:MaxMetaspaceSize3M直接内存
  XX:MaxDirectMemorySize
  其他更多的命令可百度或者谷歌查询。
  Tip:XX表示运行参数OOM堆溢出
  虚拟机参数:Xms5mXmx5mXX:PrintGC
  代码片段1:publicclassOOMHeap{publicstaticvoidmain(String〔〕args){ListObjectlistnewLinkedList();inti0;try{while(true){i;if(i100000){System。out。println(i);}list。add(String。valueOf(i));}}catch(Throwablee){System。out。println(i:iError:e);}}}输出如下〔GC(AllocationFailure)1020K656K(5632K),0。0016767secs〕〔GC(AllocationFailure)1680K879K(5632K),0。0011192secs〕〔GC(AllocationFailure)1903K1403K(5632K),0。0084106secs〕10000〔GC(AllocationFailure)2427K2443K(5632K),0。0041601secs〕2000030000〔GC(AllocationFailure)3467K3491K(5632K),0。0048149secs〕〔FullGC(Ergonomics)3491K3256K(5632K),0。0697227secs〕40000〔FullGC(Ergonomics)4280K4257K(5632K),0。0457067secs〕50000〔FullGC(Ergonomics)4770K4769K(5632K),0。0194403secs〕〔FullGC(Ergonomics)4770K4770K(5632K),0。0190617secs〕。。。i:55128Error:java。lang。OutOfMemoryError:GCoverheadlimitexceeded
  代码片段2:publicclassOOMHeap{publicstaticvoidmain(String〔〕args){String〔〕strsnewString〔1000000000〕;}}输出:〔GC(AllocationFailure)1020K664K(5632K),0。0013220secs〕〔GC(AllocationFailure)1688K879K(5632K),0。0019375secs〕〔GC(AllocationFailure)1495K975K(5632K),0。0021262secs〕〔GC(AllocationFailure)975K999K(5632K),0。0009794secs〕〔FullGC(AllocationFailure)999K914K(5632K),0。0077754secs〕〔GC(AllocationFailure)914K914K(5632K),0。0003017secs〕〔FullGC(AllocationFailure)914K896K(5632K),0。0103908secs〕Exceptioninthreadmainjava。lang。OutOfMemoryError:Javaheapspace。。。java。lang。OutOfMemoryError:GCoverheadlimitexceeded一般是(某个循环里可能性最大)在不停地分配对象,但是分配得太多,把堆撑爆了。java。lang。OutOfMemoryError:Javaheapspace一般是分配了巨型对象栈溢出
  虚拟机参数:Xss256kpublicclassOOMStackTest{privateintdeepen1;privatevoidrecurrence(){deepen;recurrence();}publicstaticvoidmain(String〔〕args){OOMStackTesttestnewOOMStackTest();try{test。recurrence();}catch(Throwablee){System。out。println(stackdeeptest。deepen);e。printStackTrace();}}}输出stackdeep20733java。lang。StackOverflowErroratcom。jmmq。load。jim。jvm。OOMStackTest。recurrence(OOMStackTest。java:17)atcom。jmmq。load。jim。jvm。OOMStackTest。recurrence(OOMStackTest。java:17)atcom。jmmq。load。jim。jvm。OOMStackTest。recurrence(OOMStackTest。java:17)。。。递归参数如果增加参数列表则栈深度会变小,因为参数也会打包到栈帧中
  java。lang。StackOverflowError一般的方法调用是很难出现的,如果出现了要考虑是否有无限递归。直接内存溢出
  虚拟机参数Xmx10MXX:MaxDirectMemorySize10MpublicclassOOMDirectMemory{publicstaticvoidmain(String〔〕args){ByteBufferbufferByteBuffer。allocate(1024102411);}}输出Exceptioninthreadmainjava。lang。OutOfMemoryError:Javaheapspaceatjava。nio。HeapByteBuffer。init(HeapByteBuffer。java:57)atjava。nio。ByteBuffer。allocate(ByteBuffer。java:335)atcom。jmmq。load。jim。jvm。OOMDirectMemory。main(OOMDirectMemory。java:12)

手机空间不足拯救计划!分享四个手机储存空间清理的大家好我是非凡资源李李昨天给大家带来了几款电脑清理软件,今天来给大家带来四款手机的清理软件,每一款都值得拥有啊,而且实用的很那。不多说了开始吧一。【安卓】最强清理神器,清……创纪录!三星集团发布未来三年的投资和雇佣计划,预计投资1。3央视财经(记者吕博慧)据韩国国际广播电台25日报道,三星集团发布了未来三年的投资和雇佣计划。三星集团预计未来三年将共投资240万亿韩元(约合人民币1。33万亿元),创史上最大规……搭载首颗自研影像芯片,vivoX70全系外型曝光近日,外媒91mobiles曝光了vivo下半年的旗舰X70系列全系三款机型的外观渲染图,该手机正面采用中部开孔屏设计,后置矩形模组带有蔡司认证小蓝标。X70爆料称……我国累计建设5G基站91。6万座,占全球70,有何实际意义?我国已建成全球最大光纤网络、4G和5G独立组网网络,目前5G已建成基站91。6万个,占全球70,5G连接数已经超过3。65亿,占全球80。下一步我国将加强对5G、大数据、基础软……好耳机不只AirPods?这几款蓝牙耳机也值得入手蓝牙耳机,可以说是近年来的业界新宠,已经成为了众多手机音乐爱好者的必备之物,前有苹果的AirPods珠玉在前,后有国内厂商推出的高性价比耳机奋勇争先,各种品牌型号耳机层出不穷。……小米手机10周年,回顾历代经典机型8月10日晚19:30,小米CEO雷军举行年度演讲,当晚MIX4、小米平板5等一系列新品也一同发布。值得一提的是,2021年也是小米手机的10周年,DoNews带你回顾一……特斯拉哨子国内上架,卖350元被抢空1月5日消息特斯拉Cyberwhistle哨子日前在国内上架,售价350元。特斯拉官网显示,这款产品已经出于缺货状态。特斯拉Cyberwhistle哨子以特斯拉旗下电动卡……屠龙者终成恶龙,AMD苏姿丰表示将减少关注低端CPU,注重高兼容机之家小牛带你发现更多新潮数码资讯。AMD,YES!当大家喊出这句话时,AMD推出的CPU和显卡就肯定战胜了英特尔或者英伟达,给大家带来了更加实惠的产品。自从2017……21日0点京东云无线宝229元秒杀21日0点开始,京东云无线宝鲁班64GB畅想版开启秒杀,限时优惠价229元,一年包回本,热销爆款,可放心入手。京东云推出的无线宝云路由能利用家中闲置网络来为用户自动打工,……未来世界,没芯片寸步难行!中国将从何处发力,才不看美国的脸色图为芯片光刻机目前世界的信息技术产业正在迅速发展并融入进人民群众的生活当中,因此可以说在10年之后如果没有芯片将会寸步难行,而正是由于看到了这样的未来,中国霸气发话了,不……只看页面信息,互联网买菜如何让人放心?习近平总书记指出,民以食为天,加强食品安全工作,关系我国13亿多人的身体健康和生命安全,必须抓得紧而又紧。各级党委和政府及有关部门要全面做好食品安全工作,坚持最严谨的标准、最严……用来办公的话,MacBookAir和MacBookpro谁值这种问题见一次喷一次,就好像来问16g的手机iPhone8和8p哪个好一样。你特么爱买那个办公用哪个,没人嘲笑你。但是一个成年人连买东西也要来问,要么就是穷,要么就是没主见……
世界上最恐怖的鬼片(不喜勿入)世界上最恐怖的鬼片(不喜勿入)恐惧,是人类永恒的战栗。恐怖片一直是电影宇宙中热门的题材之一,一部好的恐怖片可能不需要多逼真的特效,也不需要多么大的制作,直击心灵深处的恐惧……赚得越多,越抠门年轻人该不该过低欲望生活?前段时间,有研究数据显示,截止到2021年6月30日,95后群体的存钱金额同比2020年增长了38,而其他年龄段的用户群体只增长了4。6。根据报告显示,95后的存钱速度是……微软宣布Windows11来了!无需安装即可体验自从微软宣布发布Windows11以来,很多小伙伴都跃跃欲试,无奈有些朋友的电脑配置可能并不支持安装Windows11。不过最近国外大神blueedgetechno用Re……字节跳动启动2022秋招名额超8000,员工总数已突破11万又到互联网大厂一年一度的秋招季节。8月12日,字节跳动正式启动2022届秋季校园招聘,面向2022届毕业生即2021年9月至2022年8月毕业的大学生群体,开放超过8000个就……小娘惹中所有的歌曲及谁唱的小娘惹人物关系图解读新版电视剧《小娘惹》是时隔新加坡版小娘惹12年后的一次成功改编,播出后关注度非常高,剧中主要人物被网友广泛讨论,就连电视剧中的歌曲也有被很多人找来听,那你知道小娘惹中所有的歌曲……ViewSonic(优派)TX5000K客厅百寸大屏市场的有当家用投影机进入到固态新光源的时代,激光与LED光源之间的竞争越发激烈,越来越多优秀的新机型在市场中迸发。不过,在聚焦于客厅影院的超短焦投影机市场之中,激光光源似乎走得更远,基……精英律师何赛穿裙子哪一集何赛和蓝兰最后在一起了吗在近日更新的电视剧《精英律师》剧情当中,何赛穿裙子的事情登上了热搜榜,这是怎么回事呢?何赛穿裙子是哪一集?何赛和蓝兰最后在一起了吗?一起来看一下具体的情况。精英律师何赛穿……精英律师杨帆结局杨帆喜欢罗槟吗两人到底是什么关系近些时日,电视剧《精英律师》正在热播当中,在最新更新的剧情当中,袁泉饰演的杨帆出场了,她的一出场就感觉和罗槟的关系不一般。《精英律师》中杨帆结局是什么?杨帆喜欢罗槟吗?两人到底……惊天反转!吴亦凡是被冤枉了?几天前,都美竹决战的宣言一出,这几天的微博上不断爆出各种各样的大瓜。相继有20多位女生出面爆料吴亦凡的罪行,随着事件的影响越来越恶劣,各大官媒都相继发文要求彻查此事。……精英律师袁泉扮演的角色是什么袁泉电视剧作品一览《精英律师》,热度居高不下,据悉,袁泉也在剧中有客串,那么,精英律师袁泉扮演的角色是什么:袁泉电视剧作品一览?经了解,袁泉在这部剧中是一位女强人,律师界精英,能力非常的强,一起……精英律师蓝红罗槟为何分手二人分手原因现实生活很普遍近日,电视剧《精英律师》正在热播当中,十分优秀的罗槟在剧中的感情线是很多观众关注的焦点,在之前罗槟和蓝红有过一段感情,但是之后却不欢而散了,蓝红罗槟为何分手,二人分手原因其实在……郑州经开水务发展有限公司绿水青山志愿服务卫生活动为维护整洁卫生的城市生活环境,整治脏乱差现象,按照区文明办《关于在2021年元旦春节期间开展志愿服务关爱行动的通知》,2月19日上午,郑州经开水务发展有限公司志愿者服务队与安飞……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网