JVM
代码学习
代码
展开
-
深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法
JVM GC基本原理与GC算法 Java的内存分配与回收全部由JVM垃圾回收进程自动完成。与C语言不同,Java开发者不需要自己编写代码实现垃圾回收。这是Java深受大家欢迎的众多特性之一,能够帮助程序员更好地编写Java程序。下面四篇教程是了解Java 垃圾回收(...转载 2019-03-20 09:44:31 · 133 阅读 · 0 评论 -
CMS收集器和G1收集器的区别
CMS收集器和G1收集器的区别区别一: 使用范围不一样CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用区别二: Stop-to-World的时间CMS收集器以最小的停顿时间为目标的收集器。G1收集器可预测垃圾回收的停顿时间(建立可预测的停顿时间模型)区别三: 垃圾碎片CMS收集器是使用...原创 2019-09-25 14:00:11 · 550 阅读 · 0 评论 -
OOM
堆OOM直接内存OOM过多线程导致的OOM永久(Pern)溢出GC效率低下引起的OOMString常量池因其的OOMhttps://www.cnblogs.com/htkj/p/10932489.html转载 2019-09-18 16:15:05 · 454 阅读 · 0 评论 -
内存泄露和内存溢出的区别 (概念区别 产生原因区别 及解决办法) 个人整理
内存泄露和内存溢出的区别概念区别内存溢出 : out of memory 指程序在申请内存时,没有足够的内存空间供其使用,出现out fo memory 比如申请一个integer 但给它存了long才能存下的数那就是内存溢出内存泄露 : memory leak 指程序在申请内存后,无法释放已经申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后的结果很严重,无论多少内存,迟早会被占光...转载 2019-09-02 16:23:13 · 227 阅读 · 0 评论 -
如何确定java内存泄露的位置
为什么会发生内存泄漏Java如何检测内在泄漏呢?我们需要一些工具进行检测,并发现内存泄漏问题,不然很容易发生down机问题。编写java程序最为方便的地方就是我们不需要管理内存的分配和释放,一切由jvm来进行处理,当java对象不再被应用时,等到堆内存不够用时,jvm会进行垃圾回收,清除这些对象占用的堆内存空间,如果对象一直被应用,jvm无法对其进行回收,创建新的对象时,无法从Heap中获取足...转载 2019-09-02 10:36:20 · 749 阅读 · 0 评论 -
类加载过程
类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口验证确保 Class 文件的字节流中包含的信息符合当前虚拟机的要求...转载 2019-07-01 10:38:56 · 117 阅读 · 0 评论 -
Java对象创建过程
①类加载检查:虚拟机遇到一条 new 指令时,在常量池中查看是否有new的参数对应类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程②分配内存:新生对象分配内存。对象所需的内存大小在类加载完成后便可确定分配方式有 “指针碰撞” 和 “空闲列表” 两种,选择哪种分配方式由 Java 堆是否规整决定,而Java堆是否规整又...原创 2019-07-01 09:46:07 · 246 阅读 · 0 评论 -
如何判断一个类是无用的类?
方法区主要回收的是无用的类,那么如何判断一个类是无用的类的呢?判定一个常量是否是“废弃常量”比较简单,而要判定一个类是否是“无用的类”的条件则相对苛刻许多。类需要同时满足下面3个条件才能算是 “无用的类” :该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。加载该类的 ClassLoader 已经被回收。该类对应的 java.lang.Class 对象没有在任何地方...原创 2019-07-01 09:24:45 · 1234 阅读 · 0 评论 -
垃圾回收器
以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。单线程与多线程:单线程指的是垃圾收集器只使用一个线程,而多线程使用多个线程;串行与并行:串行指的是垃圾收集器与用户程序交替执行,这意味着在执行垃圾收集的时候需要停顿用户程序;并行指的是垃圾收集器和用户程序同时执行。除了 CMS 和 G1 之外,其它垃圾收集器都是以串行的方式执行。G1垃圾回收器...原创 2019-06-30 21:45:29 · 112 阅读 · 0 评论 -
常见的垃圾回收算法
1、标记清除法方法:标记阶段:首先将需要进行回收的内存进行标记,清除阶段:将标记的对象进行清除缺点:碎片化比较多,无法给大的对象分配内存;常常效率较低2、复制算法方法:将内存分为相等的两块,每次只使用一块内存,将这一块内存中存活的对象复制到另一块内存中,将使用过的内存进行清理;缺点:虽然效率和碎片化问题解决了,但是当出现更多的对象存活时,复制的效率就会降低;3、标记整理法方法:将...转载 2019-06-30 21:37:38 · 519 阅读 · 1 评论 -
对象的引用
对象的引用通过对如何判断一个对象是够应该被回收知道,可达性分析和程序计数法都是需要判断该对象是否被引用,但是对于不同的引用,回收的情况也不尽相同1、强引用被强引用关联的对象不会被回收。使用 new 一个新对象的方式来创建强引用。Object obj = new Object();2 、软引用被软引用关联的对象只有在内存不够的情况下才会被回收。使用 SoftReference 类来...原创 2019-06-30 21:31:53 · 344 阅读 · 0 评论 -
如何判断对象是否死亡
怎么判断一个对象是否应该被回收?主要的方法分为两种:引用计数算法和可达性分析算法,目前常用的就是可达性分析算法;程序计数算法对一个对象添加一个引用的计数器,当该对象被引用依次那么计数器+1,如果引用被释放,那么计数器-1,这样根据对象最终引用次数为0时,将该对象回收;缺点:当两个对象互相的引用,引用计数器就无法得到为0,那么也就无将对象就行回收;可达性分析算法首先找到一个GC ro...原创 2019-06-30 21:27:27 · 657 阅读 · 0 评论 -
类加载器和双亲委派模型
应用程序是由三种类加载器互相配合从而实现类加载,除此之外还可以加入自己定义的类加载器。下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。工作过程一个类加载...原创 2019-05-20 21:57:03 · 192 阅读 · 0 评论 -
类加载机制
类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。类的生命周期包括以下 7 个阶段:加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)类的加载过程包含了加载、验证、准备...原创 2019-05-20 21:53:46 · 185 阅读 · 0 评论 -
Minor GC 和 Full GC,垃圾回收
Minor GC 和 Full GCMinor GC :新生代中的对象存活时间很短,所以Minor GC 回收比较的频繁,执行的速度也是比较的块Full GC:老年代的中的对象存活时间比较长,发生垃圾回收的几率比较的少,执行的速度比较的长内存分配策略对象优先在 Eden 分配大多数情况下,对象在新生代 Eden 上分配,当 Eden 空间不够时,发起 Minor GC。大对...原创 2019-05-20 21:44:12 · 614 阅读 · 0 评论 -
JVM思维导图
哪些区域需要垃圾回收?从JVM运行数据区域划分可以看到,内存的划分集中在两块,线程私有的内存的生命周期是和内存的周期相同,随着线程的结束内存既然也就得到释放;所以内存垃圾回收机制主要集中的区域就是线程共享区域:堆和方法区怎么判断一个对象是否应该被回收?主要的方法分为两种:引用计数算法和可达性分析算法,目前常用的就是可达性分析算法;程序计数算法对一个对象添加一个引用的计数器,当该对...原创 2019-05-20 21:34:44 · 139 阅读 · 0 评论 -
JVM的内存布局
什么是JVM首先JVM是运行Java代码的假想计算机,运行在操作系统之上的,与硬件没有直接的交互。Java源文件经过编译后形成字节码文件,通过JVM的类加载的机制进入Java虚拟机的运行数据区,再通过一套的字节码指令集,将Java的代码翻译成计算机能够识别的指令,最终实现Java代码在计算机上的运行实现。其中的JVM内存布局的概念:指的就是JVM的运行数据区JVM运行数据区1、JV...原创 2019-05-20 20:40:07 · 237 阅读 · 0 评论 -
深入理解JVM虚拟机3:垃圾回收器详解
转自 JavaDoopHotSpot JVM 垃圾回收器更新时间:2018-03-28关于 JVM 内存管理或者说垃圾收集,大家可能看过很多的文章了,笔者准备给大家总结下。这算是系列的第一篇,接下来一段时间会持续更新。本文主要是翻译《Memory Management in the Java HotSpot ...转载 2019-03-18 18:23:53 · 125 阅读 · 0 评论 -
JVM调优(转)
https://www.jianshu.com/p/bc5410a6e69a转载 2019-10-10 14:19:10 · 106 阅读 · 0 评论