JVM 堆分为 年轻代,年老代,持久代。
年轻代:产生和回收对象的区域,分为1个Eden和2个Survivor(from 和 to)。
年老代:生命周期较长的对象
持久代:类、方法等
JVM GC 机制
1. 对象总是产生于Eden.
2. 当Eden满时触发GC,将存活的对象复制到其中一个Survivor(from).将不存活的对象回收。
3. 当Survivor(from)满时,将survivor(from)中存活的对象复制到survivor(to)中。这时survivor(from)清空,变成survivor(to)。原survivor(to)变survivor(from)。可以看出survivor(to)永远保持空的。
4. Survivor(from) -> Survivor(to) 每迁移一次,年龄+1.
5. 当年龄达到 -XX:MaxTenuringThreshold 时, 将被移到年老代。
JVM参数
-Xmx:最大内存数
-Xms:初始内存数
-Xmn:年轻代大小
-Xss:每个线程堆栈大小
-XX:NewRatio: 年轻代与年老代比例 3表示(年轻代:年老代=1:3)
-XX:SurvivorRatio:单个survivor与Eden比例 3表示(survivor:Eden=2:3)
-XX:MaxPermSize:持久代大小
JVM 回收器 类型
1.串行回收器:只适合较少的数据。
-XX:+UseSerialGC
2.并行回收器:吞吐量优先。
-XX:+UseParallelGC(年轻代选择并行回收器)
-XX:+UseParallelOldGC(年老代选择并行回收器)
-XX:ParallelGCThreads=20(并行线程数,与处理器数目相等)
-XX:MaxGCPauseMillis=100(设置年轻代最长回收时间)
-XX:+UseAdaptiveSizePolicy(自动调整年轻代大小,以满足回收最长时间和频率)
3.并发回收器:响应时间优先。
-XX:+UseConcMarkSweepGC(年老代选择并发回收器)
-XX:+UseParNewGC(年轻代选择并发回收器)
-XX:CMSFullGCsBeforeCompaction(设置并发回收多少次后进行内存压缩整理)
-XX:+UseCMSCompactAtFullCollection(打开对年老代的压缩。可能会影响性能)
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况
4.JVM GC 日志打印
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用
-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间
-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间
-XX:+PrintHeapAtGC:打印GC前后的详细堆栈信息
-Xloggc:filename:记录日志文件
分享到:
相关推荐
注: 博主所有博客内容的学习笔记都是从学习资料处学习得来,些许位置的思路会借鉴,但保证所有文章的所有内容(包括文字和图) 都是自己原创字是一个一个打的 图是一笔一笔画的 内存结构概述 简单画了个图 这是个简图 ...
陌溪的学习笔记 关于我 陌溪 是一个从三本院校一路摸滚翻爬上来的程序员。目前就职于 字节跳动的Data广告部门,是字节跳动全线产品的商业变现研发团队。这两天创建了一个 微信公众号【陌溪教你学编程】,未来将会在...
面试通常会涉及Java基础(如封装、继承、多态)、集合框架(List、Set、Map的区别与使用)、异常处理、多线程、IO流、反射机制以及JVM内存模型等。了解这些内容有助于应对面试中的技术问题。 最后,深入浅出Java ...
AngularJS学习笔记(checkcheckzz).epub Everything curl.epub F# for Fun and Profit eBook.epub Gradle 实战.epub iOS的函数响应型编程.epub JVM必知必会.epub Kubernetes 指南.epub LeetBook(LeetCode详解)....
MySQL架构学习笔记 温故而知新-MySQL数据类型 MySQL索引实战经验总结 提高篇 源码阅读 源码阅读之Vector 源码阅读之ArrayList 并发编程 高并发编程-AQS深入解析 高并发编程-CountDownLatch深入解析 高并发编程-CAS...
文档中还提到,内容是作者个人学习笔记的整理,其中也包含了一些书籍推荐,供读者进一步深入学习。此外,文中还提到了自动化上传方案,说明了作者在内容整理和分享方面也做了很多工作。这本复习资料强调原创性,鼓励...
maven java 源码 notebook ...本项目采用协议,因为基本都是自己的原创笔记、博客,希望大家使用或转载时可以尽量注明出处 参与共建 如果你对本项目的内容感兴趣,有相关的想法来完善项目,欢迎来提issue
在学习档案中,你可能会发现关于这两门语言的笔记、代码示例、项目实践等内容,这些都是作者在学习过程中积累的经验和理解。通过阅读和理解这些资料,你不仅可以深化对Java和JavaScript的理解,还能借鉴作者的学习...