![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 88
小奶糕的笔记本
我的笔记本
展开
-
07JVM_内存模型和CAS与原子类
1.介绍①CAS全称compare and swap比较并交换②当多个线程同时操作同一个资源,只能有一个线程操作成功。但是不会阻塞其他线程,其他线程只会收到操作失败的信号。原创 2023-09-15 16:05:59 · 237 阅读 · 0 评论 -
06JVM_类加载器
当不满足开发时,可以自定义加载器。比如用网络加载Java类,为了保证传输中的安全性,采用了加密操作,那么以上3种加载器就无法加载这个类,这时候就需要自定义加载器。实现步骤①继承ClassLoader父类②遵从双亲委派模式,重写findClass方法③读取类文件的字节码④调用父类的defineClass方法加载类⑤使用者调用该类的加载器loadClass方法。原创 2023-09-13 15:00:53 · 199 阅读 · 0 评论 -
05JVM_类加载阶段
③外部通过访问Person类的Class对象获取Person的类数据结构。通过class类提供的接口,可以获得目标类所关联的.class文件的具体数据结构:方法、字段信息。①加载的类在JVM创建相应的类结构instanceKlass的元数据存储在方法区(jdk1.8在元空间内),但_java_mirror的java类镜像存储在堆中。该Class对象在加载类的过程创建的,每个类都有一个Class类型的对象。④类加载器的loadClass方法,只会加载,不会解析和初始化。得到类,字段,方法在内存中的地址。原创 2023-09-13 09:23:50 · 240 阅读 · 0 评论 -
04JVM_语法糖
因为编译器在创建匿名对象时,将复制给匿名对象的value属性,x就不能发生变化了,值固定住了。默认构造器没有写任何的构造方法,但经过编译器编译成字节码过程中,会加上调用父类Object的无参构造方法。如果调用foo()无参方法,那么创建一个空的数组new String[]{},而不是传递null。调用foo(实参1,实参2)方法,编译器会根据实参的数量生成一个String数组。③MALE的ordinal()=0,FEMALE的ordinal()=1。Number m()调用子类的方法,同时符合重写的规则。原创 2023-09-12 10:37:10 · 285 阅读 · 0 评论 -
03JVM_类加载
①8~9字节,常量池计数器2个字节代表常量池的长度。4~7字节,表示类的版本00 34(16进制换算十进制是52),表示java8。字段表表示声明的变量,字段的名字,字段的类型是什么。存放字面量(文本字符串,final常量)和符号引用(包名,类名)②后面n个字节(1-常量池-1)就是常量池表,存放的是。②方法的访问修饰符,方法的返回值,方法参数信息。表示常量池的#3项,需要从常量池读取。表示常量池的#4项,需要从常量池读取。00 02:访问标志,查上表,私有的。符号引用(类,方法,字段描述符)原创 2023-09-11 09:35:21 · 456 阅读 · 0 评论 -
02JVM_垃圾回收GC
当垃圾回收准备回收一个对象时,如果发现他是虚引用,在垃圾回收后把这个虚引用加入引用队列,通知应用程序对象的回收情况。①要确定一个根对象GC Roots(肯定不会被垃圾回收的对象)作为起始节点,当垃圾回收前会对堆对象进行扫描,判断这些对象是否被根对象引用,如果没有被引用那么这个对象就可以垃圾回收。软引用(间接引用)是一些还有用但非必需的对象,当被软引用关联的对象,系统发生内存溢出钱,会把这些对象列进回收范围进行二次回收。在系统进行垃圾回收时,发现弱引用,不管系统堆空间是否充足,都会回收软引用关联的对象。原创 2023-09-05 20:52:12 · 664 阅读 · 0 评论 -
01JVM_内存结构
1.JVM的定义Java程序的运行环境,java二进制字节码的运行环境2.JVM的好处①一次编写,到处运行②自动内存管理,垃圾回收功能③数组下标越界检查④多态3.jvm,jre,jdk的比较3.常见的JVM主要学习的是HotSpot虚拟机4.jvm的学习路线①ClassLoader:java代码编译成二进制后,会经过类的加载器,这样才能加载到JVM运行②Method Area:类是放在方法区的③Heap:类的实例化对象放在堆区④当类调用方法时,会用到虚拟机栈,程序计数器,本地方法栈。原创 2023-08-31 16:17:31 · 350 阅读 · 0 评论