- 浏览: 16617 次
- 性别:
- 来自: 上海
文章分类
最新评论
JVM 在进行GC的时候,需要做两个事情,一个是GC root 做可达性分析
GC root的对象 可能是常量,类静态变量,以及虚拟栈中的局部变量,这些大概组成了GC root对象,GC root 需要在一个JVM 某个时间点的快照,然后基于这个快照来做可达性的分析,基于这个快照,判断哪些对象是要被回收的,接下来就要真正的GC操作,在新生代,老年代,会做不同的GC操作,标记清理,或者复制整理,或者标记整理,
将新生代的存活的对象,转入到老年代,老年代也会做自己的回收策略
在GC回收是,大多数JVM 会做stop the world 的一个操作,即停止整个JVM,这个操作多少会影响到JVM 对外使用者的体验,但是却又不可缺少,因为不做这个停止操作,GC root将没有办法精确的找到某个时间点上,对象及引用的关系,如果这个关系不断的变动,GC就没有办法判断哪些是真实的不可达的,会造成内存清理的不准确,甚至引发系统的异常,另外呢,就会出现清理的内存不完全的问题,更多原因还是在前者
GC root的对象 可能是常量,类静态变量,以及虚拟栈中的局部变量,这些大概组成了GC root对象,GC root 需要在一个JVM 某个时间点的快照,然后基于这个快照来做可达性的分析,基于这个快照,判断哪些对象是要被回收的,接下来就要真正的GC操作,在新生代,老年代,会做不同的GC操作,标记清理,或者复制整理,或者标记整理,
将新生代的存活的对象,转入到老年代,老年代也会做自己的回收策略
在GC回收是,大多数JVM 会做stop the world 的一个操作,即停止整个JVM,这个操作多少会影响到JVM 对外使用者的体验,但是却又不可缺少,因为不做这个停止操作,GC root将没有办法精确的找到某个时间点上,对象及引用的关系,如果这个关系不断的变动,GC就没有办法判断哪些是真实的不可达的,会造成内存清理的不准确,甚至引发系统的异常,另外呢,就会出现清理的内存不完全的问题,更多原因还是在前者
发表评论
-
知识点
2017-11-13 18:16 0happen befor: 线程 star before 线程 ... -
ConcurrentHashMap 精髓
2017-11-02 15:13 0ConcurrentHashMap 精髓: 1.s ... -
经典面试题
2017-09-28 16:58 676接触到一个经典的面试 ... -
java condition await() 与object wait()的区别
2017-09-07 14:42 2775java condition await() 与object ... -
一致性HASH
2016-11-10 15:54 0在我们做分布式的时候,难免会有一个路由的过程,比如说redis ... -
java Thread 解析
2016-10-27 21:31 0/* * Copyright (c) 1994, 20 ... -
悲观锁 乐观锁,公平锁,非公平锁
2016-10-27 13:55 0悲观锁 乐观锁,公平锁,非公平锁 d 他们的区别 悲观锁与乐 ... -
java LockSupport
2016-10-26 20:33 0/* * ORACLE PROPRIETARY/CONFI ... -
AbstractQueuedSynchronizer 的 CLH
2016-10-26 09:19 0/** * Wait queue node ... -
java 中的wait 与 await
2016-10-25 20:16 0java中wait() 与 await() wait() 方 ... -
java中内存泄漏
2016-09-01 07:43 555内存泄漏(memory leak):该被回收的对象没有被回收, ... -
线程性能与可伸缩性
2016-08-25 23:06 0对性能的思考 性能与可伸缩性 评估各种性能的权衡因素 am ... -
怎么平衡线程并发中的活跃性和安全性
2016-08-25 23:02 0线程的活跃性 活跃性:线程的处理速度 安全性:加锁保证数据的正 ... -
java线程的取消和关闭
2016-08-25 22:55 0java的线程取消和关闭 在正常的业务操作中,碰到进行中的任 ... -
Java 线程池
2016-08-25 09:24 0线程池工作原理 线程池的原理解析 线程池代码解析 -
JVM内存模型
2016-08-25 09:21 0JVM 内存模型:分为工作内存和主内存 JVM 内存间的交互操 ... -
研发分级
2016-07-27 11:54 0研发分级 今天老大问了一个问题:怎么区分 -
java并发详解
2016-08-31 07:34 585线程安全 1.什么是并发? 2.什么是线程安全 3.如何保证线 ... -
编程建议(持续更新)
2016-07-18 11:01 3751.UML的重要性,推荐plant ... -
java学习路线图
2016-07-14 22:56 671这么长的时间,么有好好总结过自己的学习路线,今天和大家一起分享 ...
相关推荐
5. **GC调优**:包括如何分析GC日志,理解GC停顿(Stop-the-World)事件,以及如何通过调整JVM参数来改善系统性能,如设置堆大小、新生代与老年代的比例、存活代的晋升策略等。 6. **性能监控与诊断工具**:如...
G1和ZGC使用更先进的算法来降低STW(Stop-The-World)时间。 - **内存回收**:通过可达性分析算法判断对象是否存活,如引用计数法和根可达法。 finalize()方法用于对象在被回收前的自定义清理逻辑,但不应依赖它...
它采用分代收集算法,包括新生代、老年代和永久代,以及各种GC策略如Stop-the-world、并发标记等。 6. **异常处理**:JVM支持异常处理框架,通过异常表来确定异常发生时的处理流程。 7. **多线程**:JVM内置对多...
了解这些算法的工作原理,可以帮助我们优化内存分配和回收,避免内存泄漏和STW(Stop The World)现象,提高系统响应速度。 JVM的类加载机制也值得深入研究。它遵循“双亲委派模型”,保证了类的唯一性。我们可以...
- **CMS(Concurrent Mark Sweep)GC**:并发标记清除,尽可能减少STW(Stop-The-World)时间,适合响应时间敏感的应用。 - **G1(Garbage-First)GC**:新一代的垃圾回收器,目标是整体暂停时间可预测,适合...
- **GC暂停时间**:关注垃圾收集过程中的暂停时间(Stop-The-World),过长的暂停可能影响应用响应速度。 3. **线程分析** - **线程状态**:监控JVM中的所有线程,展示它们的状态(如运行、等待、阻塞等),有助...
- 实际应用中的GC问题诊断,例如内存泄漏、长时间的Full GC、Stop-the-world事件等。 - 通过调整JVM参数解决性能问题的实例。 通过深入学习JVM体系结构和GC调优,开发者可以更好地理解和控制Java应用的内存使用,...
1. 并发标记:G1采用了Stop-the-world的并发标记阶段,减少暂停时间。 2. 增量式并发模式:在标记过程中,G1会分成多个步骤,逐步进行,减少长时间暂停。 3. 年老代优先:G1会优先处理年老代的垃圾,因为这些对象...
它在一个线程中执行GC操作,因此在GC过程中会暂停应用执行(Stop-The-World)。 2. **并行GC(Parallel GC)**:也称为吞吐量优先GC,它在多线程环境中运行,提高了GC效率,减少了整体运行时间,但STW仍然存在。 3...
3. **Concurrent Mark Sweep (CMS) GC**:这种垃圾回收器尝试并发地执行大部分垃圾回收操作,以减少"Stop-the-world"事件。它适合响应时间敏感的应用。 4. **G1 (Garbage-First) GC**:G1是一种并行和并发的垃圾...
例如,在需要处理大规模数据量或高并发的应用程序中,用户可能会遇到频繁的垃圾收集暂停(stop-the-world pauses),这会影响到应用程序的响应时间和整体性能。 #### 2. Ergonomics(工效学) 工效学是指通过调整...
3. **CMS(Concurrent Mark Sweep)GC**:并发标记清除,减少STW(Stop-the-World)暂停时间。 4. **G1(Garbage-First)GC**:目标是实现低延迟,能够预测和控制垃圾收集暂停时间。 **方法的出入栈与栈上分配** ...
- `-XX:+UseConcMarkSweepGC`:启用并发标记扫描垃圾收集器,减少STW(Stop-The-World)时间。 4. **G1 GC**: - `-XX:+UseG1GC`:启用G1垃圾收集器,提供更好的响应时间和可预测的暂停时间。 三、性能调优参数 ...
- **CMS GC**:并发标记清除,尽量减少STW(Stop-The-World)时间,提高应用响应速度。 - **G1 GC**:基于Region的垃圾收集器,目标是实现低延迟的垃圾收集,适合大型系统。 4. **垃圾收集算法**:主要有四种基本...
13. **XX:+UseCMSCompactAtFullCollection**: 开启后,Full GC后会进行碎片整理,但会导致"Stop the World"事件。 14. **XX:CMSFullGCsBeforeCompaction**: 指定执行多少次Full GC后进行一次内存碎片整理,默认为0...
5. STW(Stop-The-World) STW 是一种状态,在垃圾回收算法执行过程中,需要将 JVM 内存冻结的状态。在 STW 状态下,JAVA 的所有线程都是停止执行的,GC 线程除外,native 方法可以执行,但是不能与 JVM 交互。 6....
3. ** CMS(Concurrent Mark Sweep)GC**:并发标记清除,减少STW(Stop-The-World)时间,提高应用响应性。 4. ** G1(Garbage-First)GC**:目标是达到更可控的暂停时间和可预测的内存使用。 GC调优主要包括以下...
1. **并行与并发**:G1能与其他线程并发工作,减少STW(Stop-the-World)事件,提高应用的响应速度。 2. **分代收集**:虽然G1没有明确的新生代和老年代,但它仍然采用了类似的理念,根据对象的存活周期将Region划分...