JVM虚拟机
JVM虚拟机主题研究
瘦子没有夏天
大家好,我是Leon。一个专业与Java领域的程序员,偶尔理理财。欢迎大家来阅读我博客,如果你发现极个别文章和书籍内容雷同,请叫我勤奋的code搬运工٩(๑❛ᴗ❛๑)۶。我的邮箱:gyoomi0709@foxmail.com
展开
-
JVM之线程安全和锁优化
线程安全和锁优化 一、概述 二、线程安全 2.1 Java中的线程安全 不可变 Java中如果对象时final修饰。如果是基本类型,它一定是不可变的。如果是引用类型,需要保证对象的行为不会对其产生影响。 可以参考java.lang.String类,调用的substring()、replace()方法不会对其原来的对象值产生影响,而是新new出来一个值返回。 保证对象的行为不影响自己的状态的方式...原创 2019-03-06 18:09:20 · 263 阅读 · 0 评论 -
JVM之虚拟机类加载机制
第七章 虚拟机类加载机制 7.1 概述 在了解class的文件的存储格式后,在class文件中描述的各类信息必须加载到虚拟机中才能运行和使用 虚拟机把类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成虚拟机可以直接使用的Java类型 7.2 类的加载时机 类的整个生命周期: 加载(Loading) 验证(Verification) 准备(Preparation...原创 2019-02-19 17:30:55 · 268 阅读 · 0 评论 -
JVM之类文件机构
第三部分 虚拟机执行子系统 六、类文件机构 6.1 概述 6.2 无关性的基石 Write Once,Run Anywhere! 6.3 class文件的结构 对数量、顺序、大小、分隔符等都是有很严格的限制和要求的 表示 6.3.1 魔数和Class文件版本 每个class文件的头4个字节称为魔数(Magic Number);作用:确认这个class文件是否为虚拟机接受的class文件;在...原创 2019-02-19 17:28:08 · 214 阅读 · 0 评论 -
JVM之垃圾回收器和内存分配策略
三、垃圾回收器和内存分配策略 3.1 概述 那些内存需要回收?什么时候进行回收?如何进行回收? 程序计数器、虚拟机栈、本地方法栈这三部分随着线程而生,随着线程而灭。栈中的栈帧随着方法有序的进出。每一个栈帧中分配内存是在类结构确定下来就已知(JIT会在编译时进行些许优化) 因此程序计数器、虚拟机栈、本地方法栈这三者内存分配和回收都具备确定性,垃圾回收再这几块不需要你过多的考虑。他们会随着线程的回收...原创 2019-02-09 18:41:35 · 791 阅读 · 0 评论 -
JVM7及之后的默认垃圾收集器
1. jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代) 2. jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代) 3. jdk1.9 默认垃圾收集器G1 4. jdk10 默认垃圾收集器G1 5. jdk11 默认垃圾收集器G1 -XX:+PrintCommandLineFlag...原创 2019-01-29 18:08:20 · 2048 阅读 · 0 评论 -
JVM之Java内存区域和内存溢出异常
二、 Java内存区域和内存溢出异常 2.1 概述 2.2 运行时数据区域 Java虚拟机规范第二版,内存分布如下: 2.2.1 程序计数器 是一块较小的内存空间。 作用:当前线程所执行的字节码的行号指示器。 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,所以在任何一个确定的时刻,一个处理器(对于多核来说是一个内核) 只会执行一条线程中指令。因此,在线程切换后能...原创 2019-01-28 21:14:58 · 440 阅读 · 0 评论