- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 0050-垃圾回收器
文章目录1. 基础定义1.1 按线程数分1.2 按工作模式分1.3 性能指标2. 垃圾回收器概述3. Serial-串行回收器3.1 Serial3.2 Serial Old4. ParNew-并行回收器5. Parallel-吞吐量优先回收器5.1 Parallel Scavenge5.2 Parallel Old6. CMS-低延迟回收器7. G1-区域化分代式回收器8. GC总结9. GC日志分析1. 基础定义1.1 按线程数分按线程数分,垃圾回收器可以分为串行或者并行(指的是垃圾回收的线程)
2020-06-29 15:31:04 2109
原创 0040-垃圾收集算法
文章目录1. 前言2. 标记算法2.1 引用计数算法2.2 可达性分析算法3. 对象的finalization机制4. 垃圾清除阶段算法4.1 标记-清除(Mark-Sweep)4.2 复制算法(Copying)4.3 标记-压缩算法(Mark-Compact)4.4 三种算法的比较5. 分代收集算法6. 补充算法6.1 增量收集算法6.2 分区算法1. 前言垃圾回收分为两个阶段,首先确认哪些对象是垃圾——标记阶段,其次是垃圾确认以后的回收——回收阶段2. 标记算法2.1 引用计数算法1. 简述
2020-06-29 15:28:35 2090
原创 0036-StringTable
文章目录1. String的基本特性2. String的内存分配3. String的基本操作4. 字符串拼接操作5. intern()的使用1. String的基本特性String的基本特性1. String字符串的定义方式 String s1 = "atguigu";// 字面量定义方式 String s2 = new String("hello"); 2. String声明为final的,不可被继承3. String实现了Serializable接口:表示字符串是支持
2020-06-03 16:15:14 2244
原创 0035-对象实例化步骤,内存布局,访问定位
文章目录1. 实例化步骤2. 内存布局3. 对象访问定位1. 实例化步骤对象创建的方式1. new2. Class的newInstance()3. Contructor的newInstance(xxx)4. 使用clone5. 使用反序列化6. 第三方库Objenesis对象的创建步骤1. 判断对象对应的类是否加载,链接,初始化,没有加载,使用双亲委派机制加载类2. 为对象分配内存 不同的垃圾收集器会导致,内存规整或不规整,不同的内存结构,会有不同的分配方
2020-06-03 16:14:35 2129
原创 0034-方法区
文章目录1. 栈、堆、方法区的交互关系2. 方法区的理解3. 方法区的演进4. 设置方法区大小5. 方法区的内部结构5.1 类型信息5.2 域(Field)信息5.3 方法(Method)信息5.4 类变量5.5 运行时常量池 & 常量池6. 方法区的演进细节7. 方法区的垃圾回收1. 栈、堆、方法区的交互关系线程共享的角度1. 线程共享区域:堆和方法区,两者都会有OutOfMemoryError和GC2. 线程独占区域:虚拟机栈,本地方法栈,程序计数器,两个栈会出现StackOve
2020-06-03 16:14:03 2368
原创 0033-堆
文章目录1. 简述2. 堆空间的设置3. 年轻代与老年代4. 对象的分配过程5. Minor GC/ Major GC/ Full GC6. 堆空间分代思想7. 对象提升规则8. TLAB(Thread Local Allocation Buffer)9. 常用参数总结10. 堆是分配对象的唯一选择吗1. 简述1. 堆是jvm管理的一块最大内存空间,且一个jvm只存在一个堆内存2. 堆空间被所有的线程共享,同时也可以划分线程私有的缓冲区(Thread Local Allocation Buffer,
2020-06-03 16:13:10 2058
原创 0032-虚拟机栈
文章目录1 简介2 栈配置3 栈帧3.1 局部变量表(local variables)3.2 操作数栈(Operand Stack)3.3 动态链接(Dynamic Linking)3.4 方法返回地址(Return Address)3.5 一些附加信息4. 栈的相关面试题1 简介java虚拟机栈,早期也称为java栈,每个线程在创建时,都会创建一个虚拟机栈,其内部包含一个个栈帧(Stack Frame),对应一次次的方法调用,虚拟机栈是线程私有的,没有GC,有可能会出现StackOverFlowErr
2020-06-03 16:12:30 2248
原创 0031-程序计数器
文章目录1 简介2 作用3 举例4 常见问题1 简介1. 存储空间很小的内存空间,运行速度最快的存储区域2. 程序计数器是线程私有的,生命周期与线程的生命周期一致3. 任何一个线程同一个时间节点都只有一个方法执行,这个方法称为当前方法,程序计数器会存储当前正在执行java方法的jvm指令地址,如果是native方法,则是未指定值(undefined)4. 它是唯一一个在java虚拟机中没有规定任何OutOfMemoryError的情况2 作用程序计数器会存储当前正在执行java方法的
2020-06-03 16:02:33 2166
原创 0030-内存概述
文章目录概览图1. 内存角色1.1 方法区1.2 堆区1.3 虚拟机栈1.4 程序计数器1.5 本地方法栈2. 线程共享性概览图1. 内存角色内存中主要涉及到的角色有方法区,堆,虚拟机栈,程序计数器,本地方法栈1.1 方法区方法区主要存储加载的class类元数据,包括类型信息,运行时常量池(不包含字符串常量),域信息,方法信息等1.2 堆区堆区又分为新生代和老年代,新生代又分为Eden,s0,s1区,是垃圾回收的重点区域,主要存储new出来的对象,还有几个特殊的对象,Class对象及内部的
2020-06-03 16:01:47 2104
原创 0020-类的加载
文章目录1. 内存结构概述2. 类的加载过程2.1 类加载器的作用2.2 类加载器角色2.3 类的加载过程1. 加载2. 链接3. 初始化3. 类加载器的分类3.1 引导类加载器(Bootstrap ClassLoader)3.2 自定义类加载器(User-Defined ClassLoader)3.2.1 扩展类加载器(Extention ClassLoader)3.2.2 应用程序类加载器(Application ClassLoader)3.2.3 自定义加载器4. ClassLoader的使用说明5.
2020-06-03 16:01:02 2075
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人