最近开始研究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垃圾收集要比并发收集简单,因为堆被冻结并且对象在收集期间并没有改变。它的缺点是造成应用的暂停结果是不能被接受的
分享到:
相关推荐
它不仅向读者提供了JVM垃圾收集机制的理论知识,还提供了实操指导,比如如何选择和调优垃圾收集器以及使用哪些工具来评估垃圾收集器性能。对于开发人员来说,掌握这些知识可以帮助他们编写出性能更优、稳定性更高的...
- **垃圾收集器**:如Serial、ParNew、Parallel Scavenge、CMS、G1等,各有特点,适用于不同场景。 理解JVM内存模型和垃圾回收机制对于优化Java应用性能、避免内存泄漏和有效利用资源至关重要。开发者应根据实际...
深入理解JVM内存分配、垃圾收集(Garbage Collection, GC)原理以及垃圾收集器的工作方式对于优化程序性能至关重要。 首先,我们要了解JVM内存结构。在Java中,内存主要分为以下几个区域: 1. **堆内存(Heap)**...
1. JVM原理:JVM的工作原理涉及类加载器(ClassLoader)、类文件(ClassFile)、内存管理及垃圾收集机制。类加载器负责将.class文件加载到内存中,为程序的运行准备数据结构。内存管理涉及JVM内存区域,包括堆、栈、...
JVM是Java平台的一部分,负责执行字节码,管理内存,垃圾收集,以及提供硬件和操作系统之间的抽象。在深入探讨JVM之前,我们先来理解一下什么是字节码。Java源代码编译后生成的是.class文件,这些文件包含的是Java...
常见的JVM垃圾收集器包括: - Serial收集器:单线程,适合小型应用。 - ParNew收集器:Serial的多线程版本,常与CMS配合。 - Parallel Scavenge:关注吞吐量,适用于服务器环境。 - Serial Old、Parallel Old:...
Jvm中有多种垃圾收集器,如串行(Serial)垃圾收集器、并行(Parallel)垃圾收集器、并发(Concurrent)垃圾收集器等。其中,串行垃圾收集器是Jvm默认的垃圾收集器,它使用单线程来执行垃圾回收。并行垃圾收集器使用...
### JVM详解与学习 #### Java相关 ##### 1.1 Java定义 Java 是一种广泛使用的高级编程语言,具有面向...以上内容覆盖了JVM的基础知识、内存管理和垃圾收集等方面,对于深入理解Java应用程序的运行机制非常有帮助。
通过调整JVM参数,我们可以控制堆大小、垃圾收集策略、线程栈大小等,以达到最佳的运行效果。例如,通过-Xms和-Xmx设置堆内存大小,-XX:+UseG1GC选择垃圾收集器等。 总结来说,JVM是Java编程的重要组成部分,它的...
JVM提供了多种内存调优策略,如设置堆大小、新生代和老年代的比例、使用哪种垃圾收集器等,以提高应用性能。例如,CMS(Concurrent Mark Sweep)和G1(Garbage-First)是两种常见的垃圾收集器,它们各有优势,适用于...
以下是一些关于JVM的常见面试题和相关知识点: 1. **JVM的组成** - **类装载器(ClassLoader)**:负责加载类文件到JVM内存中,分为 Bootstrap ClassLoader、Extension ClassLoader 和 AppClass ClassLoader。 - **...
- 垃圾收集的目的是自动回收不再使用的对象所占用的内存。 - 分代收集理论:将堆分为新生代(Eden、Survivor)、老年代,不同年代采用不同的GC算法。 - 常见的GC算法有:标记-清除、复制、标记-整理、分代收集等...
- **Jstat**:显示JVM的统计信息,如堆内存使用情况、垃圾收集器信息等。 - **Jinfo**:查询或更新JVM配置信息。 - **JConsole**:图形化的监视和管理工具,能够远程监控JVM。 - **VisualVM**:集成了多个功能的故障...
在性能调优方面,JVM提供了许多可调整的参数,如堆大小、新生代与老年代的比例、垃圾收集器的选择等。这些参数的合理配置可以显著提高应用的运行效率。例如,通过增大堆内存以容纳更多对象,或选择合适的垃圾收集器...
本篇文章将深入探讨JVM的各个方面,包括其工作原理、内存模型、垃圾收集以及性能优化。 一、JVM工作原理 Java源代码经过编译器转化为字节码,这些字节码文件以`.class`结尾。JVM在运行时加载这些字节码,然后解释...
本篇文章将深入探讨JVM的生命周期、体系结构、类加载机制、内存区域以及垃圾收集。 首先,JVM的生命周期与Java程序紧密关联。每当运行一个Java程序时,就会创建一个JVM实例。这个实例在程序执行期间存在,直到程序...
7. **性能监控**:SAP JVM提供了丰富的JMX(Java Management Extensions)和JFR(Java Flight Recorder)功能,帮助管理员监控和分析JVM的性能,如内存使用、线程状态、GC(垃圾收集)行为等。 总之,SAP JVM 8.1 ...
Java虚拟机(JVM)是Java程序运行的基础,它负责解释和执行字节码,管理内存,以及执行垃圾收集(Garbage Collection, GC)。在Java应用程序的开发和运行过程中,了解JVM的工作原理,监控其状态,以及进行性能调优是...
3. 垃圾回收机制:JVM提供了多种垃圾收集器,如Serial GC、Parallel GC、CMS(Concurrent Mark Sweep)GC、G1(Garbage-First)GC等,用以适应不同场景下的内存管理需求。 4. 线程模型:JVM中的线程是映射到操作...
# 基于Java虚拟机(JVM)的内存管理与垃圾回收系统 ## 项目简介 本项目深入探讨了Java虚拟机(JVM)的内存...4. JVM调优提供了JVM调优的实战指南,包括如何选择合适的垃圾收集器、调整堆内存大小、设置GC停顿时间等。