
深入理解JVM
深入理解JVM
Hojyn
个人博客地址:https://xzzz2020.gitee.io/,可以收藏一下,会第一时间发布文章
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【详解】JVM虚拟机字节码执行引擎
目录1. 运行时的栈帧结构1.1 局部变量表1.2 操作数栈1.3 动态连接1.4 方法返回地址1. 运行时的栈帧结构栈帧:用于支持虚拟机进行方法调用和方法执行的数据结构,存储了方法的局部变量表、操作数栈、动态链接和方法返回地址。每个方法调用到完成对应的栈帧的入栈和出栈。可能很多的方法会同时处于执行状态,只用栈顶的才是有效的,称为当前栈1.1 局部变量表是一组变量值存储空间,用...原创 2020-04-15 11:14:14 · 321 阅读 · 0 评论 -
【详解】JVM之类的加载机制
1. 类加载的生命周期生命周期如下所示其中加载、验证、准备、初始化是确定的,但是解析可以在初始化之后,为了支持Java的动态绑定机制。总得分为加载和连接阶段(验证、准备、解析、初始化)2. 类的加载过程2.1 加载需要完成三件事情通过一个类的全限定类名获取该类定义的二进制字节流(是最灵活的部分)将这个字节流所代表的静态存储结构转化成方法区的运行时结构在内存中生成一个代表这...原创 2020-04-14 21:30:06 · 235 阅读 · 0 评论 -
【详解】Java内存区域与内存溢出异常
运行时的数据区域程序计数器和虚拟机栈参考:https://blog.youkuaiyun.com/qq_43040688/article/details/104970081本地方法栈和堆参考:https://blog.youkuaiyun.com/qq_43040688/article/details/104972811方法区参考:https://blog.youkuaiyun.com/qq_4304068...原创 2020-04-13 16:54:08 · 168 阅读 · 0 评论 -
JVM--内存模型
目录1. 原子性问题分析解决方法2. 可见性退不出的循环解决方法可见性3. 有序性诡异的结果解决方法有序性理解happens-before4. CAS 与 原子类CAS乐观锁与悲观锁原子操作类5. synchronized 优化轻量级锁锁膨胀重量锁偏向锁其它优化JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障。跟内存结构没有关系1...原创 2020-03-23 15:28:33 · 414 阅读 · 0 评论 -
JVM---字节码&代码优化
目录JVM字节码JVM字节码前面我们通过tomcat本身的参数以及jvm的参数对tomcat做了优化,其实要想将应用程序跑的更快、效率更高,除了对tomcat容器以及jvm优化外,应用程序代码本身如果写的效率不高的,那么也是不行的,所以,对于程序本身的优化也就很重要了。对于程序本身的优化,可以借鉴很多前辈们的经验,但是有些时候,在从源码角度方面分析的话,不好鉴别出哪个效率高,如对字符串拼接...原创 2020-03-23 10:36:25 · 510 阅读 · 0 评论 -
Tomcat8优化
目录Tomcat配置优化部署安装tomcat8禁用AJP连接执行器(线程池)3种运行模式使用Apache JMeter进行测试下载安装调整tomcat参数进行优化禁用AJP服务设置线程池设置最大等待队列数设置nio2的运行模式调整JVM参数进行优化设置并行垃圾回收器设置G1垃圾回收器小结Tomcat配置优化部署安装tomcat8下载并安装:https://tomcat.apache.org...原创 2020-03-22 18:12:31 · 550 阅读 · 0 评论 -
JVM之运行参数
目录三种参数类型标准参数-XX参数查看jvm的运行参数在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。三种参数类型jvm的参数类型分为三类标准参数-help-version-X参数 (非标准参数)-Xint-Xcomp-XX参数(使用率较高)-XX:newSize-XX:+UseSerialGC标准参数...原创 2020-03-21 17:35:07 · 293 阅读 · 0 评论 -
【详解】JVM——垃圾回收之垃圾收集器
目录1. 串行垃圾收集器a. 编写测试代码b. 设置垃圾回收为串行收集器2. 并行垃圾收集器3. ParallelGC垃圾收集器(一般使用这个)4. CMS垃圾收集器5. G1垃圾收集器(重点)a. Young GCb. Mixed GCc. 对于G1垃圾收集器优化建议可视化GC日志分析工具前面我们讲了垃圾回收的算法,还需要有具体的实现,在jvm中,实现了多种垃圾收集器,包括:串行垃圾收集器、...原创 2020-03-21 17:18:24 · 717 阅读 · 0 评论 -
【详解】JVM——垃圾回收算法大全
目录垃圾回收常见算法1. 引用计数法2. 标记清除法3.标记压缩算法4. 复制算法分代算法垃圾回收常见算法自动化的管理内存资源,垃圾回收机制必须要有一套算法来进行计算,哪些是有效的对象,哪些是无效的对象,对于无效的对象就要进行回收处理。常见的垃圾回收算法有:引用计数法、标记清除法、标记压缩法、复制算法、分代算法等。1. 引用计数法引用计数是历史最悠久的一种算法,最早George E. C...原创 2020-03-21 12:33:34 · 468 阅读 · 0 评论 -
【详解】JVM——垃圾回收之对象引用
目录什么是垃圾回收?C/C++语言的垃圾回收Java语言的垃圾回收五种引用什么是垃圾回收?程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理就会一直占有内存资源,最终将导致内存溢出,所以对内存资源的管理是非常重要了。C/C++语言的垃圾回收在C/C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete关键字释放内存资源。如果,程序员在某些位置没有写...原创 2020-03-21 12:33:19 · 613 阅读 · 0 评论 -
【详解】JVM——内存结构之直接内存
定义Direct Memory常见于 NIO 操作时,用于数据缓冲区(ByteBuffer)分配回收成本较高,但读写性能高不受 JVM 内存回收管理属于系统操作的内存,不属于JVM内存观察下面案例/** * 演示 ByteBuffer 作用 */public class Demo1_9 { static final String FROM = "E:\\编程资料\\...原创 2020-03-20 19:02:19 · 380 阅读 · 0 评论 -
【详解】JVM——内存结构之方法区
定义是所有Java虚拟机线程共享的区存储了跟类的结构相关的信息,包括方法,构造器,成员属性,运行时常量池等在虚拟机启动时被创建逻辑上是堆的组成部分(并不强制所有的厂商按照这一条,1.8以前用的堆内存,1.8以后用的是系统内存)方法区也会导致内存溢出组成1.6采用的是永久代实现了方法区,1.8采用了元空间实现方法区,在本地内存实现。内存溢出问题代码演示:import jdk...原创 2020-03-20 18:22:37 · 1001 阅读 · 0 评论 -
【详解】JVM——内存结构之本地方法栈&堆
本地方法栈指不是由Java代码编写的代码,如C和C++和操作系统直接打交道本地方法有很多,如Object类中的clone方法,属于native方法作用给本地方法的执行提供内存空间Heep 堆通过 new 关键字,创建对象都会使用堆内存特点它是线程共享的,堆中对象都需要考虑线程安全的问题有垃圾回收机制堆内存溢出演示代码: public static void ...原创 2020-03-19 18:35:18 · 411 阅读 · 0 评论 -
【详解】JVM——内存结构之程序计数器&虚拟机栈
程序计数器定义:Program Counter Register 程序计数器(寄存器)作用:右边是Java源代码。需要先编译成左边的二进制字节码(JVM指令)这些指令需要经过解释器,解释成机器码,最后交给CPU执行程序计数器的作用:记住下一条指令的执行的地址,最左边的数字,可以理解为“地址”现将第一条指令交给解释器解释,然后将下一条指令的地址–3,放入程序计数器当第一条指...原创 2020-03-19 17:45:37 · 836 阅读 · 0 评论 -
JVM--引言
什么是JVM定义:Java Virtual Machine - java 程序的运行环境好处:一次编写,到处执行(跨平台)拥有自动内存管理机制,垃圾回收机制数组下表越界检查(C++数组越界,会导致覆盖其他内存)多态JDK、JRE、JVM比较:常见的JVM...原创 2020-03-19 12:01:31 · 406 阅读 · 0 评论