
java虚拟机
文章平均质量分 83
戴夫爱吃胡萝卜
这个作者很懒,什么都没留下…
展开
-
JVM理解——类加载机制
一、什么是类加载机制 把描述类的数据从Class文件加载到内存,并对数据进行验证,准备,解析和初始化,最终形成可以被虚拟机使用的java类型。 二、类加载过程 (1)加载 通过一个全类名获取定义此类的二进制字节流 将字节流代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的java.lang.Class文件 (2)验证 确保Class文件符合规范,确保不会危害虚拟机自身安全。 文件格式验证 元数据验证 字节码验证 符号引用验证 (3)准备 将类中的静态变量分配内存,设置初始原创 2021-04-15 15:11:57 · 196 阅读 · 0 评论 -
JVM理解——GC垃圾收集
目录一、判定对象是否存活算法(1)引用计数算法(2)可达性分析二、引用类型三、常见垃圾回收算法(1)标记-复制算法(2)标记-清除算法(3)标记-整理算法(4)分代收集算法四、常见垃圾收集器(1)Serial(2)Serial Old(3)ParNew(4)Parallel Scavenge(5)Parallel Old(6)CMS(7)G1五、GC收集五、内存分配策略 一、判定对象是否存活算法 (1)引用计数算法 在对象中添加一个引用计数器,每有一个引用,计数器就就+1;引用失效,计数器就-1。当计数器为原创 2021-04-12 11:28:31 · 221 阅读 · 0 评论 -
JVM理解——String
一、String的基本特性 String:字符串,使用“”引起来表示(一种为字面量方式,一种为new) 字面量创建的存储在字符串常量池中 String声明为final,不可被继承 实现了Serializable接口:表示支持序列化;实现了Comparable接口:表示可以比较大小 String在jdk8及以前使用 final char[] value 存储字符串数据;jdk9改为 byte[] +coder 原因:char占用两个字节,而大部分字符(ISO-88559-1/Latin-1)只占用一个字节,原创 2020-06-23 21:09:35 · 219 阅读 · 0 评论 -
JVM理解——内存区域
一、概述 线程私有 所有线程共享 二、运行时数据区 (1)程序计数器 程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,记录正在执行的虚拟机字节码指令的地址。 线程私有(每个线程都需要一个独立的程序计数器,且互不影响) 问题一:为什么要使用程序计数器记录当前线程的执行地址? 答:因为cpu需要不停切换执行各个线程,这样切换回来以后就知道该执行什么指令 (2)Java虚拟机栈 java虚拟机栈(JVM Stack):每个线程创建时都会创建建原创 2020-06-21 21:07:48 · 198 阅读 · 0 评论