JVM
文章平均质量分 91
什么是快乐
这个作者很懒,什么都没留下…
展开
-
synchronized(this)和synchronized(obj)
首先synchronized(this)和synchronized(obj)区别原创 2023-02-05 23:04:50 · 2016 阅读 · 3 评论 -
JVM-3 对象创建与执行引擎
对象的实例化、内存布局对象创建的方式newClass 的newInstance() :反射的方式Constructor 的newInstance(Xxxx) :反射的方式clone():不调用构造器,但是要实现Cloneable()接口使用返序列化:第三方库对象创建的步骤1、判断对象对应的类是否加载、链接、初始化2、为对象分配内存,3、处理并发安全问题4、初始化分配到空间5、设置对象的对象头6、执行init()方法进行初始化对象的内存布局对象的访问引用思考:J原创 2020-08-16 16:08:08 · 111 阅读 · 0 评论 -
JVM-2 运行时数据区
运行时数据区程序执行时: 每个线程独立的拥有 程序计数器、本地方法栈、虚拟机栈 线程共享:方法区和堆空间程序计数器(pc寄存器)作用: pc寄存器用于存储下一条指令的地址,即将要执行的指令代码,由执行引擎读取下一条指令常见问题 1、为什么使用PC寄存器记录当前线程的执行地址? 答:因为CPU需要不停的切换各个线程,切换一个线程后需要记录下次执行从哪开始。明确下次开始的地址 2、 PC寄存器为什么被设定为每个线程一份 答:因为每个线程是独立的,cpu执行时并发的执行原创 2020-08-16 16:05:30 · 133 阅读 · 0 评论 -
JVM -1 整体结构与类加载子系统
JVM整体结构Java代码执行流程计算机系统指令集分为栈的指令集和寄存器的指令集。JVM是采用栈的指令集,其与硬件耦合度小,指令集小,指令多。性能逊于寄存器指令集JVM生命周期1、虚拟机的启动 虚拟机的启动是通过类加载器创建一个初始类实现的2、虚拟机的执行3、虚拟机的退出 程序正常结束 程序执行出现异常或错误 操作系统错误导致虚拟机出现错误类加载子系统类记载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。Cl原创 2020-08-16 15:59:47 · 136 阅读 · 0 评论 -
JVM-5 垃圾回收器
垃圾回收概述什么是垃圾垃圾是程序在运行中没有任何指针指向的对象。这个对象就是需要回收的垃圾垃圾的危害:内存溢出、内存泄漏(程序中不用的对象进行垃圾回收时回收失败)为什么要GC:对于一个高级语言而言,没有垃圾回收,内存空间迟早会满,没有GC则不能保证程序正常运行早期的垃圾回收需要手动进行垃圾回收:如new 申请内存空间、delete释放内存空间垃圾回收算法标记阶段标记阶段需要验算垃圾是否存活。当一个对象不在被其他存活的对象引用时,该对象就可以被认为死亡了。引用计数算法对每个对象保存一个原创 2020-07-27 15:14:03 · 129 阅读 · 0 评论 -
JVM-4 String Table
String Table底层结构String:字符串;使用双引号 “ ” 引起来表示声明方式是final,不可被继承jdk 1.8 String的底层实现是char[]jdk 1.9 String的底层实现是byte[]目的是为了节约一些空间String 是不可变的字符序列特性字符串1、字符串常量池不会存储相同内容的字符串2、String 对应的String 常量池对应的是一个固定大小的Hash Table。HashTable的特性导致了特性1String 的内存分配Jav原创 2020-07-21 22:46:15 · 223 阅读 · 0 评论