最近开始研究jvm垃圾收集相关训
1. Java Tuning White Paper
http://java.sun.com/performance/reference/whitepapers/tuning.html
2. Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
3. Memory Management in the Java HotSpot™ Virtual Machine
d:/x学习资料/memorymanagement_whitepaper[1].pdf
4. cms gc实践总结
http://www.iteye.com/topic/473874
5.jvm垃圾收集算法简介
http://lz999.iteye.com/blog/304986
6.Java 理论与实践: 垃圾收集简史
http://www.ibm.com/developerworks/cn/java/j-jtp10283/
7.HotSpot VM 的代划分
http://www.iteye.com/topic/528721
8. java调优相关
http://www.javaperformancetuning.com/news/news113.shtml
学习笔记:
垃圾收集的职责:
分配内存
保证任何被引用的对象保留在内存,回收掉不再被引用的对象的内存
对象在被引用时被称为活着(live),对象不再被引用被称为死了(dead)或者垃圾
这个查找并释放已经使用了的对象的空间的过程,称之为垃圾回收
垃圾收集解决了许多但并不是所有的内存分配问题,例如你可以无限制的创建对象并继续引用它们直到无可用内存。垃圾收集也是一个复杂的任务,需要时间和自己的资源
这个精确的算法用于垃圾收集器组织内存以及内存的分配和释放,对程序员来说是透明的。通常分配一个大的内存池来作为堆。
垃圾收集器触发垃圾收集的时间,通常为整个堆或者堆的一部分被填充起来或者达到一定的占用百分比。
对满足期望的分配请求,这涉及到从堆里找到一个确定大小的未使用的内存块,对于大多数的动态内存分配算法的主要问题是要避免碎片
可取的垃圾收集器特点
一个垃圾收集器必须安全和全面的,那就是活着的数据不应该被错误的释放,在当少数的收集周期里无人认领的垃圾不应该继续被保留。
同样垃圾收集器高效的工作而不导致应用不工作的过长暂停是令人满意的,然而与大多数计算机相关的系统经常需要权衡时间,空间和频率。例如:如果堆的空间很小,垃圾收集会很快,但是这堆会被迅速填满,因此需要频繁的垃圾收集。相反,一个大的堆需要较长的时间才会被填满,因此垃圾收集不如之前频繁,但可能一次收集会花更多时间。
另一个不错的垃圾收集器特点是碎片限制,当内存里的垃圾对象被释放时,这可用的空间可能出现在各个区域的小块,这样有可能任何一个连续的区域能都不足够分配一个大对象,一个避免碎片的方法是压紧(compaction).
可伸缩性同样重要,多线程的应用在多处理器的系统里,分配内存不应该成为可伸缩性的瓶颈,同样,垃圾收集也不应该有这样的瓶颈。
设计选择:
当设计或者选择一个垃圾收集算法的时候会有许多的选择
串行对并行:
对于串行垃圾收集,在一个时间点里只仅会做一件事,例如,即使在多个可用CPU的情况,也只有一个用来执行垃圾收集。当使用并行收集的时候,这个垃圾收集的任务被分成多个部分,那些子部分被同时的执行分别对应不同的CPU,这些同时操作可以使得垃圾收集能更快的完成,需要牺牲一些额外的复杂性和可能的碎片。
并发对停止整个世界(Stop-the-world)
当停止整个世界垃圾收集被执行的时候,在这个垃圾收集期间,应用程序是处于完全暂停的状态的,或者一个或多个垃圾收集任务被并发的执行,与应用程序同时的进行。通常,并发垃圾收集器能同时做很多它自己的工作,但是偶尔可能也会不得不有一些小许的stop-the-world的暂停。stop-the-world垃圾收集要比并发收集简单,因为堆被冻结并且对象在收集期间并没有改变。它的缺点是造成应用的暂停结果是不能被接受的
分享到:
相关推荐
NULL 博文链接:https://forrest420.iteye.com/blog/1127427
gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了...
垃圾收集:JVM具有自动内存管理和垃圾收集机制,用于自动回收不再使用的对象占用的内存空间。垃圾收集器可以根据不同的算法和策略进行配置和优化,以提高内存使用效率和性能。 类加载机制:JVM通过类加载器加载类...
网盘文件永久链接 目录 day1: 1 为什么要对jvm做优化 2 jvm的运行参数 3 jvm的内存模型 ...3 垃圾收集器以及内存分配 4 可视化GC日志分析工具 day3: 1 Tomcat8优化 2 JVM字节码 3 代码优化 .........
Cache、Perf Data、Crash 分析方法、转储分析方法、 垃圾收集器的设计演进、CMS 和 G1 收集器、栈、JVM 对硬件寄存器的利用、栈顶缓存技术、解释器、字节 码表、转发表、Stubs、Code Cache、Code 生成器、JIT 编译器...
zxing.java源码解析 这是一个JavaSE、Android领域的豆知识tips,可以用来...JVM内存模型和垃圾收集 3. 垃圾收集策略 4. G1收集器 5. Java引用类型 网络传输 正则表达式 Git 计算机组成原理(正在填补中……) 言职 附录:
Klass对象表示系统、链接、运行时数据区、方法区、常量池和常量池Cache、Perf Data、Crash分析方法、转储分析方法、垃圾收集器的设计演进、CMS和G1收集器、栈、JVM对硬件寄存器的利用、栈顶缓存技术、解释器、字节...
可伸缩、低延迟的垃圾收集器改进,用于返回未使用的内存 03、请说出 Java 12 版本中更新的重要功能 Java 12 发布于 2019 年 3 月 19 日,更新的重要功能有: JVM 更新 File.mismatch() 方法 紧凑型数字格式 String ...
垃圾收集器工作描述(公爵,倒垃圾) 用于在 JVM 上启动和开发 Java 应用程序、编译、执行的工具 线程转储分析 您应该始终在生产中使用的 Java VM 选项 文章讨论了协方差、反方差、不变性、双方差。 一般关于 Java ...
java8 集合源码分析 AboutJava ==java 相关知识(理论,代码)相关知识均是看书,博客等地方获取再由自己整理,如存在侵权,请告诉我== Java基础 ...垃圾收集器和内存分配策略 虚拟机性能监控工具 编程规范
没链接的是还没写 Java基础核心串讲 计算机操作系统与Linux 7种常见的设计模式和使用场景 Java必会基础与新版本特性 集合框架 深入浅出JVM JVM内存模型 性能调优、线上问题排查 类加载机制详解 垃圾回收机制 垃圾...
程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() 37.String s = new String(\"xyz\");创建了几个String Object? 答:...