首页
学习
活动
专区
工具
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中那些不可达的对象就会变成垃圾。

60250

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 对于可达性分析算法而言,未到达的对象并非是“非死不可”的,若要宣判一个对象的死亡,至少需要经历两次标记阶段: 如果对象在进行可达性分析后发现没有与

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

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

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

    84740

    .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线程进行后台垃圾回收。

    45420

    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.3K80

    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内存泄露的理解与解决

    73920

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

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

    20730

    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阶段).

    64920

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

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

    16230

    SSH 工作原理

    Key SSH连接过程 SSH1和SSH2特点及区别 SSH两种认证方式的特点 SSH协议的实现 ssh命令用法 sshd Server命令使用 Ssh_client配置解析 SSH抓包分析 SSH 工作原理...Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定。...如果是在本地的话通过VGA外接显示器和键盘即可完成服务器的管理工作,但我们不可能一直在服务器身边,想想机房多冷,机房环境也不适合人长期居住。所以不有了远程连接服务器的需求。...很多童鞋希望了解这些方式的背后,SSH是如何工作的: SSH如何保证客户端与服务端通行的安全 SSH采用什么加密协议 SSH是通过对称加密还是非对称加密数据在传输过程的安全 SSH如何保证数据完整性 SSH...Public Key Public Key认证的基本原理是基于非对称加密方式,分别在服务端对一段数据通过公钥进行加密,如果客户端能够证明其可以使用私钥对这段数据进行解密,则可以说明客户端的身份。

    2K10

    NativeScript工作原理

    下面我们看看NativeScript的工作原理。 1. NativeScript runtime 虽然NativeScript的代码看起来很神奇,但是内部的工作原理其实很简单。...V8提供了大量的API供使用者配置个性化的JavaScript运行环境,甚至可以注入C++代码用来统计JavaScript的CPU使用情况、管理JavaScript的GC等等。...以上便是NativeScript的工作原理。 至于如何将Objective-C对象和Java对象映射为JavaScript对象,这部分工作非常复杂,因为必须考虑到每种编程语言实现继承模式的差异。...的工作原理,那么NativeScript modules对你来说便非常容易入手了。...总结 本文简单介绍了NativeScript的工作原理,总结如下: 通过reflection获取native API的详细结构,并生成元数据。

    2.6K70
    领券