摘要: 类的生命周期 加载-》验证-》准备-》解析-》初始化-》使用-》卸载 类加载过程 类加载包括以上的前五个过程:加载,验证,准备,解析,初始化 加载 1、主要完成三个工作 通过类的完全限定名称来定位定义该类的二进制字节流 将二进制字节流中的静态数据结构转化成方法区中的动态数据结构 在堆中生成一个代表该 阅读全文
posted @ 2019-06-15 18:23 huanglf714 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 内存分配策略 1、对象优先分配在新生代Eden区 多数情况下,对象分配在新生代的Eden,若Eden区域内存不够,则引发一次Minor GC 2、大对象直接进入老年代 大对象直接分配在老年代,避免新生代里出现从Eden到Survivor频繁的内存复制 可用-XX:PretenureSizeThres 阅读全文
posted @ 2019-06-15 16:57 huanglf714 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 什么时候回收对象 引用计数法 1、原理:为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 2、缺点:无法解决循环引用问题 可达性分析 1、原理:以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收。 2 阅读全文
posted @ 2019-06-15 13:33 huanglf714 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 虚拟机栈 1、虚拟机栈维护一个线程中所有方法的栈帧,每个栈帧中保存着这个方法中用到的局部变量表,操作数栈,常量引用 2、可以用-Xss来设置每个线程中虚拟机栈的大小,在jdk1.4之前默认虚拟机栈大小是256K,在jdk1.5+默认虚拟机栈大小是1M 3、该区域可能抛出的异常 当线程请求的栈深度超过 阅读全文
posted @ 2019-06-15 12:19 huanglf714 阅读(163) 评论(0) 推荐(0) 编辑