![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 52
vio_dzyls
.
展开
-
JVM垃圾回收器和调优
十种垃圾回收器的简介以及调优的一些经验原创 2020-03-20 15:01:21 · 10853 阅读 · 2 评论 -
双亲委派模型
双亲委派模型笔记原创 2020-02-24 21:28:38 · 12505 阅读 · 0 评论 -
类加载过程
加载1.通过类的全限定名获取类的二进制流2.将二进制流中的静态存储结构转化为方法运行时的数据结构3.在内存中生成该类的class对象,作为该类的数据访问入口验证确保class文件的字节流中的信息不会危害到虚拟机准备为类的静态变量分配内存并将其初始化为默认值。如int 默认为0,boolean 默认为 false解析完成符号引用到直接引用的转换初...原创 2019-08-25 16:16:03 · 716 阅读 · 1 评论 -
Java GC回收机制总结
 一、GC概要 JVM堆相关知识    为什么先说JVM堆?    JVM的堆是Java对象的活动转载 2018-10-10 17:13:56 · 170 阅读 · 4 评论 -
GC触发条件
Minor GC触发条件:Eden区满,即触发Minor GCFull GC触发条件1. 调用System.gc(),建议执行2. 老年代空间不足3. 方法区(永久代,元空间,metaspace)空间不足4. 通过Minor GC进入老年代大于老年代的大小当Survivor From 中的对象存活了15次Minor GC,那么它将被放入老年代(OLD)...原创 2018-10-10 16:43:19 · 3625 阅读 · 0 评论 -
四种引用
强引用强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用:Object object = new Object();String str = "hello";只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。软引用软引用是用来描述一些有用但并不是...原创 2018-09-30 10:26:01 · 111 阅读 · 0 评论 -
垃圾回收算法
标记清除算法顾名思义:算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收被标记的对象。不足之处:1. 效率问题:标记和清除的效率都不高2. 空间问题:清除后有大量不连续的内存碎片,分配大内存时会进行另一次GC复制算法将内存分为大笑相等的两块,每次使用其中一块。当这一块用完了,将还存活的对象复制到另一块上面,然后将这一块清理掉。代价是内存缩小一半...原创 2018-09-30 09:41:50 · 725 阅读 · 0 评论 -
判断对象是否存活
1.引用计数算法给对象添加一个引用计数器,当有一个地方引用它时,计数器就加一;当引用失效时,就减一;任何时刻计数器为0的对象都是不可能再被使用的。缺点:不能解决相互循环引用的问题。 当两个对象相互引用时,无法回收。Python使用的是引用计数算法。Java不是。2.可达性分析算法Java、C#、Lisp所使用的通过一系列的GC Roots的对象作为起点,从这些节点开始向下搜索...原创 2018-09-30 09:41:08 · 338 阅读 · 2 评论 -
对象的创建过程
对象的创建过程虚拟机遇到new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号是否已被加载解析和初始化过。如果没有,则必须要先执行相应的类加载的过程检查通过后,虚拟机为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象非配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。假如堆中的内存绝对规整,所有用过的内存放在一边,空...原创 2018-09-25 09:11:17 · 532 阅读 · 0 评论 -
对象的内存布局
对象在内存中存储的布局可以分为3块区域:对象头、实例数据、对齐填充对象头第一部分:存储对象自身运行时的数据:哈希码、GC分代年龄、锁标志、线程持有的锁、偏向线程id、偏向时间戳。称为Mark Word。另一部分是类型指针:即对象指向它的类元数据指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。第三部分对齐填充并不是必然存在的。仅仅起着占位符的作用。因为HotSpot vm要求对象...原创 2018-09-25 09:10:29 · 816 阅读 · 0 评论 -
Java堆溢出及栈溢出
内存溢出Out Of Memory(OOM):指申请内存时,没有足够的内存供其使用。内存泄露Memory Leak:内存泄露,程序申请内存后,无法释放已申请的内存空间。内存泄露的堆积,浪费了内存空间,可能会造成OOM.堆溢出信息: OutOfMemoryError : Java heap space分析工具:Eclipse Memory Analyzer栈溢出HotSpo...原创 2018-09-25 09:09:26 · 3293 阅读 · 0 评论 -
Java内存区域
运行时内存区域1、程序计数器字节码解释器通过改变程序计数器的值来选取下一条需要执行的字节码指令分支、循环、跳转、异常处理、线程恢复等基础都需要依赖这个计数器来完成每条线程的程序计数器都是独立的Java方法:计数器记录的是虚拟机字节码指令的地址Native方法:计数器值为空唯一一个没有规定OutOfMemoryError的区域2、Java虚拟机栈线程私有;生命周期与线程相同...原创 2018-09-25 09:06:52 · 110 阅读 · 0 评论