java内存区域(1)
摘要:java内存模型分为线程共享区,线程独占区 线程共享区:方法区,java堆 线程独占区:虚拟机栈,本地方法栈,程序计数器 程序计数器:一块较小的内存空间,记录当前线程所执行的字节码行号指示器 栈:执行的是java方法或本地方法 虚拟机栈:执行java方法。每个方法执行都会创建一个栈帧 栈帧:存放的是
阅读全文
posted @
2019-06-24 10:15
<meng>
阅读(76)
推荐(0) 编辑
运行时栈帧结构
摘要:1.局部变量表 2.操作数栈 3.动态链接 4.返回方法
阅读全文
posted @
2019-05-18 08:39
<meng>
阅读(98)
推荐(0) 编辑
浅谈双亲委派模型
摘要:加载类时,先将任务抛给父类,一直到Object类,如果Object类加载不了,就交给扩展类加载器,重复..直到自定义加载器
阅读全文
posted @
2019-05-17 23:15
<meng>
阅读(133)
推荐(0) 编辑
虚拟机工具
摘要:1——jps java process status 本地虚拟机唯一id m 运行时传入主类的参数 v 虚拟机的参数 l 运行的主类全名或者jar包名称 jps jstat -gcutil 7372 jstat -gcutil 7372 1000 10 没隔1秒打印1次,共打印10次 jinfo -
阅读全文
posted @
2019-05-12 12:33
<meng>
阅读(103)
推荐(0) 编辑
内存分配
摘要:内存分配策略 1.优先分配到eden 2.大对象直接分配到老年代 -XX:PretenureSizeThreshold 3.长期存活的对象分配到老年代 4.空间分配担保 5.动态对象年龄判断 逃逸分析与栈上分配 逃逸分析:分析对象的作用域
阅读全文
posted @
2019-05-11 19:44
<meng>
阅读(87)
推荐(0) 编辑
垃圾回收(1)
摘要:3个问题: 1.如何判断对象为垃圾对象 a.引用计数法 在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1, 当引用失败(例如,对象置为null),引用计数器的值就-1 b.可达性算法(推荐) 从GCroot根节点往下搜索,能走到就不是垃圾对象,走不到就是对象 2.如何回收
阅读全文
posted @
2019-05-11 09:49
<meng>
阅读(79)
推荐(0) 编辑
对象的访问定位——如何找到对象
摘要:两种方法: 1.使用句柄 【句柄池保存了实例对象的指针,和到对象类型数据的指针】 步骤:栈内存中——》句柄池——》堆内存实例对象的地址 使用句柄池的好处 栈内存中的引用地址不需要改变,改变的只是句柄池的指针 2.直接指针 【直接指针保存了实例对象的指针,和到对象类型数据的指针】 栈内存直接指向堆内实
阅读全文
posted @
2019-05-10 16:20
<meng>
阅读(269)
推荐(0) 编辑
对象的结构
摘要:对象的结构包含3部分 1. ····Header·对象头 a.自身运行时数据(mark word) ···哈希值 ,GC分代年龄 锁状态标志 线程持有的锁 b.类型指针 2.·······InstanceData longs doubles shorts/chars 3.·······Padding
阅读全文
posted @
2019-05-10 15:56
<meng>
阅读(221)
推荐(0) 编辑
对象在内存中的布局-对象的创建
摘要:对象的创建 ··············new 类名()——》加载,连接,初始化类——》给对象分配内存(对象存储在堆中)——》把分配的内存初始化为0值——》调用对象的构造方法 ·············a.给对象分配内存——》b.线程安全性问题——》c.初始化对象——》d.执行构造方法、 a.给对象
阅读全文
posted @
2019-05-10 14:17
<meng>
阅读(106)
推荐(0) 编辑
jvm(一)类加载器
摘要:1.jvm的生命周期结束的几种情况 2.类加载过程 public class Test(){ private static int a = 1; }
阅读全文
posted @
2019-04-25 19:18
<meng>
阅读(84)
推荐(0) 编辑