JVM虚拟机
什么都不会的咸鱼
这个作者很懒,什么都没留下…
展开
-
线程安全与锁优化
Java 语言中的线程安全 1. 不可变 2. 绝对线程安全 3. 相对线程安全 4. 线程兼容 5. 线程对立 6. String不可变,保证了数据安全线程安全的实现方法 1.互斥同步 Synchronized是不公平锁 Lock:等待中断、实现公平锁、锁的绑定条件 悲观锁:让线程阻塞同步,进入等待、数据同步 2.非阻塞同步 乐观锁:volatile轻量级锁,具有两个特性:1.可见性 2.不可重排序优化原创 2021-04-12 23:52:51 · 91 阅读 · 0 评论 -
类加载机制
类加载机制加载—> 连接 ----> 初始化 ----> 运行 ----> 卸载连接分为:验证、准备、解析Java动态扩展语言特性依赖于运行时期加载和动态连接加载:三部分 1.通过全限定名来获取二进制字节流 2.通过二进制流来将静态存储结构转换为方法区运行时数据结构 3.在内存中生成一个类,作为方法区的各种类数据接口验证: 1.文件格式验证 2.元数据验证 3.字节码验证 4.符号引用验证准备:加载static修饰的数据或原创 2021-04-12 22:23:31 · 70 阅读 · 0 评论 -
JVM垃圾回收与内存分配
JVM垃圾回收与内存分配垃圾回收判断算法:1. 引用计数法给对象添加一个计数器,当引用时计数器就加1,如果引用失效时,则计数器则减1。如果计数器为0时,则表示该对象不被引用。从而判定可以回收。2. 可达性分析算法GCROOTS为起点,向下搜索,搜索过程的路径作为引用链,当一个对象没有任何一个引用链,则表明对象不可被引用。GCRoot的对象:2.1 虚拟机栈中引用的对象2.2 方法区中的类静态属性引用对象2.3 方法区中常量引用对象2.4 本地方法栈中JNI引用的对象引用:引用可以分为原创 2021-04-08 23:53:45 · 139 阅读 · 1 评论 -
JVM内存区域
JVM内存区域Java虚拟机分为:计数器、虚拟机栈、本地方法栈、堆Java堆分为新生代和老年代。新生代分为Eden、from survivor 、to survivor 比例为8:1:1。Java方法区一般被称为永久代、但是JDK1.7之后元空间取消了永久代。元空间主要存储的是类加载信息的常量、常量、静态变量、即时编译器后的代码、运行时常量池。Java虚拟机栈主要是描述Java方法执行的内存模型。每个栈帧存储局部变量表、操作数栈、动态连接。一般当类加载完成后,就确定了Java的栈内存。所以内存溢出原创 2021-04-08 22:42:19 · 77 阅读 · 0 评论