java虚拟机
你佳哥
勿于浮沙筑高台
展开
-
java虚拟机(九)内存模型JMM
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 java内存模型1 java内存模型Java Memory Model(JMM),更多关注的是多线程相关的内容;JMM定义了一套在多线程读写共享数据时(成员变量、数组),对数据的可见性、有序性和原子性的规则和保障;#mermaid-svg-YiXmfIsDRoY2Iaef .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--原创 2020-12-03 15:26:57 · 144 阅读 · 0 评论 -
java虚拟机(八)运行期优化
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 即时编译(JIT)2 反射优化1 即时编译(JIT)分层编译:将反复执行(解释)的代码使用即时编译器编译成机器码,然后直接执行机器码,存入Code Cache,效率更高;方法内联:将方法实现拷贝到调用者位置,减少调用方法参数传递的消耗;字段优化:例如对于成员变量和静态成员变量的时候可以缓存为局部变量;2 反射优化在java反射中会执行对类方法调用的优化;...原创 2020-12-02 21:53:46 · 124 阅读 · 0 评论 -
java虚拟机(七)类加载器
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 分类2 自定义类加载器2.1 场景2.2 步骤1 分类名称加载的类说明Bootstrap ClassLoaderJAVA_HOME/jre/lib无法直接访问Extension ClassLoaderJAVA_HOME/jre/lib/ext上级为Bootstrap,显示为nullApplication ClassLoaderclasspath上级为Extensi原创 2020-11-30 21:13:14 · 108 阅读 · 1 评论 -
java虚拟机(六)类加载阶段
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 加载2 链接3 初始化1 加载将类的字节码加在到方法区,内部采用C++的instanceKlass描述java类,重要field有:_java_mirror:java类镜像。例如String就是String.class,作用是把klass暴露给java使用;_super:父类;_fileds:成员变量;_methods:方法;_constants:常量池;_class_loader:类加载器;原创 2020-11-30 20:16:24 · 134 阅读 · 1 评论 -
java虚拟机(五)编译期处理
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 介绍2 默认构造器3 自动拆装箱4 泛型集合取值5 可变参数6 foreach 循环7 switch8 switch和enum9 枚举类10 try-with-resources11 方法重写时的桥接方法1 介绍语法糖指java编译器把*.java源代码编译成*.class字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是java编译器给我们程序员的一个额外福利,给糖。2 默认构造器原创 2020-11-30 19:14:50 · 127 阅读 · 0 评论 -
java虚拟机(四)字节码指令
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 javap工具2 运行流程1 javap工具Oracle提供了javap工具来反编译class文件:javap -v Main.class会显示反编译之后的class文件,主要是常量池和方法区的理解;2 运行流程首先把class的常量池信息,载入到JVM内存的方法区的运行时常量池;class方法的字节码,会存放到方法区;启动主线程,分配栈内存,压入main()方法栈帧到栈,栈帧又有局部变量表(原创 2020-11-30 15:49:19 · 167 阅读 · 0 评论 -
java虚拟机(三)类文件结构
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录0 类文件结构1 魔数2 版本3 常量池4 访问标识与继承信息5 成员变量信息6 方法信息7 附加属性0 类文件结构根据JVM规范,类文件结构如下:1 魔数0-3字节(4个字节,32位),表示它是否是【class】类型的文件;cafebabe,hhh~2 版本4-7字节,表示类的版本,00 34=3*16+4=52,表示java 8;3 常量池8-9字节,表示常量池长度,有多少项。方法信息原创 2020-11-29 21:13:34 · 124 阅读 · 1 评论 -
java虚拟机(二)垃圾回收
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 如何判断对象可以回收1.1 可达性分析算法1.2 四种引用2 垃圾回收算法2.1 标记清除2.2 标记整理2.3 复制3 分代垃圾回收3.1 分代回收原理3.2 分代回收JVM参数4 垃圾回收器4.1 串行4.2 吞吐量优先4.3 响应时间优先4.4 G14.4.1 简介4.4.2 G1垃圾回收阶段4.4.3 Young Collection4.4.4 Young Collection+Concurrent Ma原创 2020-11-29 20:36:58 · 311 阅读 · 0 评论 -
java虚拟机(一)内存结构
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 程序计数器1.1 定义1.2 特点2 虚拟机栈2.1 定义2.2 栈内存溢出(StackOverFlowError)2.3 线程问题诊断3 本地方法栈4 堆4.1 定义4.2 堆内存溢出(OutOfMemoryError:java heap space)4.3 堆内存诊断5 方法区5.1 定义1 程序计数器1.1 定义Program Counter Register 程序计数寄存器;#mermaid-sv原创 2020-11-29 10:21:34 · 305 阅读 · 0 评论 -
java虚拟机(零)简介
基于白嫖黑马程序员B站视频:java中级程序员必会的教程,解密JVM【黑马程序员出品】目录1 介绍2 学习路线1 介绍java虚拟机(JVM,Java Virtual Machine)是java程序(java二进制字节码)的运行环境(解释);一次编写,到处运行;自动内存管理,垃圾回收;JVM是一套执行java源代码的规范,各个公司可以自己开发不同的JVM,较为知名的是Hotspot;几个概念区别:JVM(Java Virtual Machine):java虚拟机,运行java二进制字节原创 2020-11-27 09:51:32 · 215 阅读 · 0 评论