java基础之----jvm介绍

常见的垃圾收集器

参考这篇文章:https://crowhawk.github.io/2017/08/15/jvm_3/

如何判断某个对象为垃圾

引用计数法

目前主流的java虚拟机都摒弃掉了这种算法,最主要的原因是它很难解决对象 之间相互循环引用的问题。尽管该算法执行效率很高。

例如:在testGC()方法中,对象objA和objB都有字段instance,赋值令objA.instance=objB及objB.instance=objA,除此之外这两个对象再无任何引用,实际上这两个对象都已经不能再被访问,但是它们因为相互引用着对象方,异常它们的引用计数都不为0,于是引用计数算法无法通知GC收集器回收它们。

可达性分析算法

前主流的编程语言(java,C#等)的主流实现中,都是称通过可达性分析(Reachability Analysis)来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。如下图所示,对象object 5、object 6、object 7虽然互相有关联,但是它们到GC Roots是不可达的,所以它们将会被判定为是可回收的对象。

常用的垃圾回收算法

复制算法

复制算法把内存分为两部分,两部分大小相同,每次只使用其中一个。一块内存用完后,把活着的对象复制到另一块内存,当前内存块全部回收。这个算法不会产生内存碎片,但是可用内存明显变少。复制算法把内存分为两部分,两部分大小相同,每次只使用其中一个。一块内存用完后,把活着的对象复制到另一块内存,当前内存块全部回收。这个算法不会产生内存碎片,但是可用内存明显变少。

标记-清除算法

标记-清除算法分为两个阶段:标记、清除。在标记阶段,扫描并标记所有需要回收的对象;在清除阶段,统一回收被标记的对象。这个算法的效率并不高,并且清除对象后会产生大量不连续的内存碎片。

标记-整理算法

标记-整理算法与标记-清除算法类似,不同的是,不会直接对垃圾对象进行回收,而是把所有存活的对象都移动到一端,然后清理掉其他部分。

分代收集算法

参考:https://blog.csdn.net/en_joker/article/details/79737533

原文地址:https://www.cnblogs.com/gunduzi/p/12084324.html

时间: 2024-08-29 13:36:46

java基础之----jvm介绍的相关文章

Java基础篇(JVM)——总领

这篇文章由几个问题组成,目的是想厘清JVM的一些基本概念,同时最后引出JVM知识体系的几大块,以后的文章就围绕这几大块展开. 1. 什么是JVM?它有什么作用? JVM是Java虚拟机的简写,Java是先编译后解释型的语言,其最初设计的目的是"一次编写,到处运行",也就是要实现平台的无关性,这个特性正是通过使用JVM实现的. 编译器首先将Java程序编译成字节码.class文件,再由JVM加载,解释成机器指令给不同的系统(从这个意义上说,Java属于解释型语言,因为它并非是直接将代码编

【java基础】IOC介绍及其简单实现

控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找.依赖注入应用比较广泛,我们这里只介绍依赖注入. 一.IOC简介 控制反转IOC,它最主要反映的是与传统面向对象(OO)编程的不同.通常我们编程实现某种功能都需要几个对象相互作用,从编程的角度出发,也就是一个主对象要保存其他类型对象的引

java基础---->摘要算法的介绍

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法.散列算法.今天,我们就开始java中摘要算法的学习. 项目结构如下: SHA算法 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorit

java基础---->摘要算法的介绍 (转)

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法.散列算法.今天,我们就开始java中摘要算法的学习. 项目结构如下: SHA算法 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorit

面试【JAVA基础】JVM

1.内存模型 1.1.堆 堆是所有线程共享的,主要存放对象实例和数组. 新生代和老年代的比例是1:2. 新生代中三个区域的比例是 8 : 1 : 1. 1.1.1.新生代 对象分配在eden区中,当eden区满时会触发minor gc,将eden区中存活的对象,复制到survivor0区中,清空eden区,当survivor0中满了时,会将存活的对象复制到survivor1区中,然后将survivor0和survivor1交换,保持survivor1是空的.每经过一次yong gc 年龄就 1.

java基础JDK jvm path环境变量

JDk=JRE +java的开发工具(javac.exe java.exe javadoc.exe)JRE =JVM +Java核心类库 2.为什么 要配置 path环境变量 ?如何配置?JAVA_HOME =bin的上一层目录path =%JAVA_HOME%\bin 3.常用的命令行操作都有哪些(至少四个)cd mdrddelcd ..cd/ 4.创建如下类 使得运行的话可以输出创建一个java 文件: ChairMan.javapublic  class   ChairMan{ publi

十、java基础之this介绍

/*一.this关键字: 1.this什么? this是一个引用类型 在堆中的每一个java对象上都有this this保存的内存地址指向自身 2.this能用在哪里? 第一:this可以用在成员方法中 第二:this可以用在构造方法中 this(实参); 通过一个构造方法去调用另一个构造方法 目的:代码复用 注意:this(实参)必须出现在构造方法中第一个语句:否则报:Error:(40, 13) java: 对this的调用必须是构造器中的第一个语句 3.this可以用来区分成员变量和局部变

JAVA 基础 HTTP的介绍

目录 http的方法 http请求头Content-Type编码指定 form表单 httpClient的使用(图片来自于网络) http的方法 OPTIOINS  返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送"*"请求测试服务器的功能性 HEAD 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回,这一方法可以在不必传输整个响应内容的情况下,就可以获取包含响应消息头中的元信息 GET     向特定的资源发出请求,它本质就是发送一个请求来取得

-Java基础-Java介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. java的介绍 1.1java简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控制和通讯问题.由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划.就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机