摘要: 一、执行引擎概述 对 加载到 运行时数据区的 字节码文件 ,解释执行,编译成让操作系统认识的机器指令; 执行引擎会根据PC寄存器的值,进行执行 二、java代码编译和执行过程 ...... 2.1、什么是解释器? 答:当java 虚拟机器启动时,会根据预定的规范对字节码采用逐行解释的方式执行,将每条 阅读全文
posted @ 2021-07-08 16:08 宋佳强 阅读(69) 评论(0) 推荐(0)
摘要: 一、直接内存概述 在java8之后,元空间使用的是本地内存。 直接内存是java堆外的,直接向系统申请的一块内存 访问直接内存的速度会优于访问java堆的速度 因此,出于性能的考虑,读写频繁的场合可能会考虑使用直接内存】 java的NIO库允许Java程序直接使用直接内存,用户数据缓冲区 IO by 阅读全文
posted @ 2021-07-08 16:07 宋佳强 阅读(209) 评论(0) 推荐(0)
摘要: 一、对象的实例化 1.1、判断对象所属于的类是否被加载、链接、初始化 虚拟机需要一条new 指令后,首先去检测这个指令的参数能否在Metaspace的常量池中 定位到一个类的的符号引用,并且去检测这个符号引用代表的类是否被加载、链接、初始化(即判断类元信息是否存在)。 如果没有,则在双亲委派机制下, 阅读全文
posted @ 2021-07-08 16:06 宋佳强 阅读(72) 评论(0) 推荐(0)
摘要: 一、栈、堆、方法区的交互关系 二、方法区的理解 jdk7是永久代的一个实现,jdk8是元空间的一个实现 和堆空间很类似,也是存储数据的地方,加载的类太多的话,容易报OOM:metaSpace 三、设置方法区的大小与OOM 3.1、调优 四、方法区的内部结构 4.1、方法区主要存什么? 类型信息、常量 阅读全文
posted @ 2021-07-08 16:04 宋佳强 阅读(193) 评论(0) 推荐(0)
摘要: 一、堆的核心概述 JVM启动时,被创建,每一个JVM实例,都对应这一个堆空间,所有的线程共享 java堆 每个线程占一小块(TLAB),线程私有的,并发性更好一些 栈里存放的是 s1实例在 堆里的 地址 1.1、堆空间细分、内存细节 现代垃圾收集器大部分都基于分代收集理论设计的 1.1.1、jdk7 阅读全文
posted @ 2021-07-08 15:59 宋佳强 阅读(938) 评论(0) 推荐(0)