首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM 概述,层次结构 以及 GC工作原理 笔记

原理:编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。...由该加载器及所有父类加载器所加载的类组成,在同一个命名空间中,不会出现类的完整名字(包括类的包名)相同的两个类;在不同的命名空间中,有可能会出现类的完整名字(包括类的包名)相同的两个类) 双亲委派模型的工作过程为...在垃圾回收器回收内存之前,还需要一些清理工作。 因为垃圾回收gc只能回收通过new关键字申请的内存(在堆上),但是堆上的内存并不完全是通过new申请分配的。还有一些本地方法(一般是调用的C方法)。...To note that: 这个搬运工作都是GC 完成的,这也是garbage collector 的名字来源,而不是叫garbage cleaner....GC负责在heap中搬运实例,以及收回存储空间。 5.3 GC工作原理 JVM 分别对新生代和旧生代采用不同的垃圾回收机制 6.3 何为垃圾? Java中那些不可达的对象就会变成垃圾。

55250

GC 原理详解

Java的GC会自动管理内存,如果要主动请求内存回收,可以调用以下方法: System.gc() Runtime.getRuntime().gc() 二、GC如何管理内存(GC算法) 当我们创建对象时,...(GC目前彩该方法): 该方法的基本思想是通过一系列称为“GC Roots”的对象作为起点,从这些点向下搜索,搜索走过的路径称为“引用链”,当某个对象到GC Roots没有任何引用链(即GC Roots...其它算法(会在以后分别分析) 三、GC Roots 如何选择GC Roots呢?...; JVM常量池中引用的对象; JVM本地方法栈中JNI(Native方法)引用的对象; 活动着的线程 下面给出一个GC Roots的图例: gc roots.png 上图为GC Roots的引用链,obj8...四、对象引用以及基于可达性分析的内存回收原理 references.png 对于可达性分析算法而言,未到达的对象并非是“非死不可”的,若要宣判一个对象的死亡,至少需要经历两次标记阶段: 如果对象在进行可达性分析后发现没有与

21620
您找到你想要的搜索结果了吗?
是的
没有找到

优秀Java程序员必须了解的GC工作原理

一个优秀的Java程序员必须了解GC工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能...一个优秀的Java程序员必须了解GC工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能...本篇文章首先简单介绍GC工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能。...GC的基本原理 Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。...一些Java编码的建议 根据GC工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。以下就是一些程序设计的几点建议。 1.最基本的建议就是尽早释放无用对象的引用。

81440

.NET GC工作流程

工作站和服务器模式 在.NET中,GC其实有一些不同的工作模式,根据客户端和服务器可以分为如下两种模式: Workstation GC Workstation GC工作GC),这种模式主要是为了满足基于...GC工作流程 需要知道的GC事件 其实对于我们分析GC工作来说,上文中提到的几个事件已经足够使用了,让我们再来回顾一下这些事件。...C->D: GC工作结束,恢复线程运行 由于GC暂停了所有的线程,所以A->D就是此类GC的STW Time时间。...另外在服务器GC模式中,用户线程还是可以作为GC线程来使用的,像用户线程1在GC发生的时候就做了一些GC工作。...除了工作线程GC以外,另外会有单独的后台GC线程进行后台垃圾回收。

37320

Android GC 原理探究

GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC原理,为什么会不断的GCGC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等...前者的在工作的时候是不没有独立的“mark”与“copy”阶段的,而是合在一起做一个动作,就叫scavenge(或evacuate,或者就叫copy)。...这样的工作方式就需要多一份空间。 后者在工作的时候则需要分别的mark与compact阶段,mark阶段用来发现并标记所有活的对象,然后compact阶段才移动对象来达到compact的目的。...而并发和非并发GC的区别主要在于前者在GC过程中,有条件地挂起和唤醒非GC线程,而后者在执行GC的过程中,一直都是挂起非GC线程的。...类型的GC,后者是GC_BEFORE_OOM类型的GC

1.2K80

Java 内存模型及GC原理

一个优秀Java程序员,必须了解Java内存模型、GC工作原理,以及如何优化GC的性能、与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,...本文将从JVM内存模型、GC工作原理,以及GC的几个关键问题进行探讨,从GC角度提高Java程序的性能。...八、Java编程建议 根据GC工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。一些关于程序设计的几点建议: 1)最基本的建议就是尽早释放无用对象的引用。...参考推荐: Java内存模型及GC原理 一个优秀的Java程序员必须了解的GC机制 Android 智能指针原理(推荐) Java虚拟机规范 Java虚拟机参数 Java内存模型 Java系列教程...(推荐) Java垃圾回收原理(360doc) Java内存模型及GC原理(图解) Java的内存结构和垃圾收集(图解) JDK5.0中JVM堆模型、GC垃圾收集详细解析(图解) Java内存泄露的理解与解决

68420

GC实现原理学习笔记

原文在此:Golang源码探索(三) GC的实现原理 内存分为了3个区域, 在X64上大小分别是spans:512M, bitmap:16G和arena:512G go的gc保证了go更适合做高并发服务...有四个阶段, 它们分别是: Sweep Termination: 对未清扫的span进行清扫, 只有上一轮的GC的清扫工作完成才可以开始新一轮的GC Mark: 扫描所有根对象, 和根对象可以到达的所有对象...标记用的后台任务会在需要时启动, 可以同时工作的后台任务数量大约是P的数量的25%, 也就是go所讲的让25%的cpu用在GC上的根据....为了防止heap增速太快, 在GC执行的过程中如果同时运行的G分配了内存, 那么这个G会被要求辅助GC做一部分的工作....)的,实际可能会出现前一阶段的扫描还未完成, 就需要开始新一轮的GC的情况,所以每一轮GC开始之前都需要完成前一轮GC的扫描工作(Sweep Termination阶段).

61220

GC的前置工作,聊聊GC是如何快速枚举根节点的

图片什么是根节点枚举顾名思义,根节点枚举就是找出所有的GC Roots。...当然要成为GC Roots是有条件的,固定可作为GC Roots的对象包括以下几种(摘抄自《深入理解虚拟机 第3版》):在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的参数...在 GC Roots 枚举时,只需要遍历每个栈桢的 OopMap,通过 OopMap 存储的信息,快捷地找到 GC Roots,这样就不需要进行全局扫描。...因此GC不是随时随地来的,得到达安全点时才可以开始GC。所以流程我们就清楚了:先是到达安全点,然后更新OopMp,然后进行根节点枚举,找到GC Roots,开始GC。...现在几乎没有虚拟机实现采用抢先式中断来暂停线程响应GC事件。

15030

GC的前置工作,聊聊GC是如何快速枚举根节点的

什么是根节点枚举 顾名思义,根节点枚举就是找出所有的GC Roots。...当然要成为GC Roots是有条件的,固定可作为GC Roots的对象包括以下几种(摘抄自《深入理解虚拟机 第3版》): 在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的参数...在 GC Roots 枚举时,只需要遍历每个栈桢的 OopMap,通过 OopMap 存储的信息,快捷地找到 GC Roots,这样就不需要进行全局扫描。...因此GC不是随时随地来的,得到达安全点时才可以开始GC。 所以流程我们就清楚了:先是到达安全点,然后更新OopMp,然后进行根节点枚举,找到GC Roots,开始GC。...现在几乎没有虚拟机实现采用抢先式中断来暂停线程响应GC事件。

13230

ZooKeeper工作原理

每个Server在工作过程中有四种状态: l LOOKING:当前Server不知道Leader是谁,正在搜寻 l LEADING:当前Server即为选举出来的Leader l FOLLOWING...流程图如下所示: Leader工作流程 Leader主要有三个功能: 1、恢复数据; 2、维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型; 3、Learner的消息类型主要有...Leader的工作流程简图如下所示: Follower工作流程 Follower主要有四个功能: 1、向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);...Follower的工作流程简图如下所示: (微信公众号:IT技术精选文摘, 微信号:ITHK01,欢迎订阅) 对于Observer的流程不再叙述,Observer流程和Follower的唯一不同的地方就是

1.1K80

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券