自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 对象是否存活和引用分类

垃圾收集器所关注的内存是java堆,和方法区 1、判断对象是否存活? 1)引用计数法:给对象添加一个计数器,当有一个地方引用它就计数器加1,当引用失效计数器减1,当计数器为0表示这个对象不能再被使用,引用计数法实现简单但是他很难解决对象之间互相循环引用的问题 2)可达性分析算法:这个算法的基本思想是通过一系列的GCRoot对象做为起始点,从这些节点开始向下搜索,搜索所走过的路径就称为引用链,...

2018-09-08 14:29:12 325

原创 OOM

1、除了程序计数器外,java虚拟机栈 本地方法栈 java堆 方法区都会产生内存溢出异常 2、那么为什么会产生内存溢出,怎么检测,内存溢出怎么办 Java堆异常 1、原因:对象占用空间达到最大堆的容量限制就会产OOM 2、异常栈信息:“java.lang.OutOfMemoryError”后面会提示“Java heap space” 3、怎么处理:   &nbsp...

2018-09-08 14:22:42 377

原创 JVM运行时数据区域划分

1、分为5个区域,分别是程序计数器,虚拟机栈,本地方法栈,还有堆和方法区 2、他们各自有什么特点,存放什么数据 1)堆和方法区是所有线程共享的区域而程序计数器,虚拟机栈,本地方法栈是线程私有的 2)接下来讲他们自己的存储的什么数据 a/程序计数器是一块较小的内存空间,他的作用相当于当前线程的所执行字节码的行号指示器,如果当前线程执行的是本地方法那么程序计数器的值为空 b/...

2018-09-08 14:21:51 224

原创 JVM对象创建过程

问题:在语言层面,通过new一个关键字就可以创建一个对象,那么在底层jvm是如何进行一个对象的创的?? 1)首先程序计数器在收到这个new得到指令时候,先到方法区的常量池检查有没有这个类的符号引用,然后检查类是否加载解析初始化过没有就进行类加载 2)类加载完成后,JVM就要在java堆上为对象分配内存,这个内存大小是在类加载的时候就确定的,从java堆中分配内存有两种方式一个指针碰撞,一个空闲...

2018-09-08 14:21:01 1378

原创 垃圾收集算法

1、垃圾回收主要发生在java堆和方法区,一般java堆的对象被分为新生代和老年代,方法区的数据被称为永久代 2、永久代主要回收:废弃常量和无用的类,那么一个类被判定位无用的类要满足3个条件 1)该类的所有的实例都被回收 2)加载该类的classLoader也被回收 3)该类对应的java.lang.Class对象没有在任何地方被引用,无法通过反射访问该类的方法 ...

2018-09-08 14:19:40 143

原创 类加载

1.1 加载 加载主要是将.class文件(并不一定是.class。可以是ZIP包,网络中获取)中的二进制字节流读入到JVM中。  在加载阶段,JVM需要完成3件事:  1)通过类的全限定名获取该类的二进制字节流;  2)将字节流所代表的静态存储结构转化为方法区的运行时数据结构;  3)在内存中生成一个该类的java.lang.Class对象,作为...

2018-09-08 14:18:25 126

原创 G1垃圾收集器&CMS收集器

G1是一款面向服务端的垃圾收集器,他的特点 1)并行并发,并行是指G1利用服务端多核优势缩短stop the world的时间,并发是指G1可以使GC线程和用户线程并发执行 2)分代收集,G1虽然还保存分代收集概念,但是G1 可以管理整个java堆不需要其他收集器配合 3)空间整合:从总体看G1是采用标记清除算法,局部看是采用复制算法,这样就不会产生内存碎片 4)可预测停顿:G1和CMS相...

2018-09-08 14:14:06 491

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除