java垃圾回收菜鸟_java程序员不懂JVM内存回收,两年后也是个菜鸟
java程序员不懂JVM内存回收,两年后也是个菜鸟
在学java程序员的时候,如果你还不懂JVM内存回收,那么你就只能是个很一般的程序员菜鸟了,那么什么是JVM内存回收呢?今天我们就来学习,都还不深入了解在上以前的课程中达内培训老师说过“JVM(三)内存回收(一)”我讲到了垃圾回收的几种算法,算是解决了之前提到的3个问题中的最后一个。
关于内存回收,还应该了解常用的内存回收器(GC Collector),即执行上述回收算法的引擎。
【垃圾回收器】
Serial / Serial old 回收器:从名字的字面意思就能明白,这两个是串行垃圾回收器。请看下图:
Serial/Serial Old收集器运行示意图
昆明达内培训老师从图中可以看出,当到达“安全点”的时候,所有的用户线程都被挂起,即“Stop the
world”发生了,然后再由单个GC线程来回收所有不需要使用的对象的内存。这里需要注意的是:
在新生代(serial)中,采用的复制算法进行垃圾回收
在老年代(serial old)中,则是采用的标记-整理算法进行垃圾回收
这两个收集器一般不建议在多处理器的服务器端使用,如果要使用,一般用在内存很小的桌面应用程序或者单核(或少核)的CPU服务器上。
【回收器】
这三个回收器均为并行回收器,其中,除了Parallel
old用于老年代回收外,另外两个都用在新生代。其并行主要体现在:Serial回收器在GC阶段只有单个线程进行GC,而这些回收器,会存在多个GC线程。
【新生代两个并行收集器区别】
ParaNew
除Serial收集器之外,只有它能和CMS搭配使用;另外,它更注重的是缩短停顿时间,达到更好的用户体验,比较适应用作与用户交互的应用程序上。使用
-XX:+UseConcMarkSweepGC选项默认会被指定为新生代的收集器,而使用-XX:+UseParaNewGC选项来强制指定它为新生代收集器;
【CMS 回收器】
CMS GC (-XX:+UseConcMarkSweepGC),其工作过程比之前的任何一个GC
Collector都要复杂,但是对低时延的应用非常有用。下面我们通过和Serial GC对比一下来说明是怎么样做到更低时延的。
Parallel Scavenge
则是更注重吞吐量的一个收集器,所谓的吞吐量就是“运行用户代码的时间/(运行用户代码时间+垃圾收集时间)”,主要适合在后台需要大量运算而不需要交互太多的任务。
另外一个最大的不同是,该收集器在设定了虚拟机的优化目标之后,如指定了-Xmx,并且指定了MaxGCPauseMillis(更关注最大停顿时间)或GCTimeRatio(更关注吞吐量),再选择参数-XX:+UseAdaptiveSizePolicy,使用自适应功能之后,虚拟机会自动根据收集到的系统性能监控信息,动态调整新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,从而提供最合适的停顿时间或者最大的吞吐量。
老年代的并行收集器(Parallel old),是Parallel
Scavenge的老年代版本,使用多线程+“标记-整理”算法实现。二者搭配之后,主要用于比较关注高吞吐量、CPU敏感的应用系统。-XX:+UseParallelOldGC来指定。
0元课程抢先听,扫码可得机会!
java垃圾回收菜鸟_java程序员不懂JVM内存回收,两年后也是个菜鸟相关推荐
- java ide 的优劣_Java程序员的困惑 Java IDE到底怎么选
原标题:Java程序员的困惑 Java IDE到底怎么选 Eclipse和IntelliJIDEA可以说是程序员们最常用的两个IDE开发工具了.IntelliJIDEA被认为是目前Java开发效率最快 ...
- java程序员从笨鸟到菜鸟_Java程序员从笨鸟到菜鸟之(十四)Html基础积累总结(上)...
[新朋友]点击标题下面(↑)蓝色字"Java那些事"关注 [老朋友]点击右上角,转发或分享本页面内容 这是我以前写的<java程序员由笨鸟到菜鸟>系列博客,每天更新一篇 ...
- java有哪些技术_Java程序员,最常用的20%技术有哪些?
两个月,这让我想到了我当年第一份工作,也是两个月从零学JAVA.当时就买了3本书,强啃了6周.记住一点,时间有限,别听网上很多大牛的,他们说的太杂.你要抓重点,你只要让人家知道,你足够初级开发就可以了 ...
- java增删改查_Java程序员你真的甘心只做增删改查吗
各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 最 ...
- java后期发展方向_Java程序员的4个职业发展方向,该如何把握黄金5年?
在Java程序界流行着一种默认的说法叫"黄金5年",意思是说,一个Java程序员从入职的时候算起,前五年我选择直接影响着整个职业生涯的发展方向和薪资走向. 而这5年,也决定了一个程 ...
- 用java制作心理测试软件_Java 程序员必备的10款开源工具
Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Ec ...
- 招聘java是什么意思_java程序员,一般招聘都要求些啥
原标题:java程序员,一般招聘都要求些啥 java程序员,一般招聘都要求些啥?某位企业领导说,他不能确认什么样的人一定是他想要的,因为优秀的程序员精通的点并不完全相同,项目也千差万别,但至少要有几个 ...
- java软件学习网站_Java程序员必看的十大学习网站
无论是作为资深Java程序员,还是刚刚Java入门的小白,都不可缺少平时学习的网站.以下小编收集了Java程序员必看的十大学习网站,这些网站可以提供信息.以及一些很棒的讲座 , 还能解答一般问题.面试 ...
- java斗图表情_java程序员斗图表情包 为何总是输
原标题:java程序员斗图表情包 为何总是输 程序员之间的斗图表情包, java真的输惨了! 表情包成了人与人聊天中不可少的分量,陌生人聊天表情包丢出去妥妥的拉近关系变熟络啊(¬_¬) 而且可以用表情 ...
最新文章
- spark更改分区_spark RDD分区是否可以指定分区
- memcache-session-manager(flexjson)
- MNIST手写数字识别
- leetcode 155. 最小栈(常数时间获取最小值,需要维护两个栈)
- SAP ABAP实用技巧介绍系列之ABAP取中文字符串的字节长度
- ITFriend创业败局(四):菜鸟CEO的自我修养
- excel怎么设置打印区域_别再浪费打印纸了!这样设置,Excel表格再大都能打印成一页!...
- 关闭弹出窗体,刷新父页面
- 这三个Offer,你怎么选?
- python深拷贝_python 深拷贝与浅拷贝的区别
- JavaScript—模块化(26)
- idc机房建设费用_机房建设方案及报价清单.doc
- HDU - 6609
- 希尔顿欢朋中国第200家酒店在杭州开业;玲娜贝儿在上海迪士尼全球首发亮相 | 全球旅报...
- Flutter实现微信支付和iOS IAP支付,ndk开发入门
- python 1、输入a,b,c解二元一次方程;2、克莱姆法则解线性方程;3、输入今天之后未来的天数,显示今天是星期几;4、输入一个数,检测是否能被5和6整除;5、输入人民币和美元的汇率和转换金额;
- 矩阵等价、相似、合同的定义及性质
- 蓝牙、WiFi、ZigBee三大无线通信技术协议模块哪一个是最好的?
- Hive转换常用函数
- ajaxSubmit提交数据重复