JVM调优实战
文章平均质量分 93
JVM调优实战,从JVM基础到JVM性能调优实战教程。
Seven的代码实验室
每个人都是一个盒子
盒子里装着一个世界
Hello World 你好,世界!
我是Seven,一个热衷分享的程序员,通过分享使自己和他人都能有所成长。
展开
-
JVM调优实战:六、Java对象的内存布局
java代码经过编译器编译后变成class文件,通过类加载器被加载到Java运行时数据区域,最后经过执行引擎执行class字节码。那么在整个过程中对象是如何被创建的呢?java对象在内存中的布局又是怎样的呢?对象的创建过程比如创建一个T的对象:new T(),这个时候会经过以下几个步骤。①把class loading到内存②linkingverification校验preparation把类的静态变量设置默认值resolution做一个解析③initializing把静态变量设为.原创 2021-03-30 21:04:39 · 284 阅读 · 3 评论 -
JVM调优实战:五、CPU的内存结构以及JMM
CPU的内存结构好,今天来讲CPU的内存结构以及Java 内存模型(Java Memory Model)CPU 和各级缓存、内存、硬盘之间的关系先看一张图,直接理解CPU与内存、硬盘之间的关系。由图可以看出CPU最底下是CPU的计算核心、往上是三级缓存,容量依次增大、L3级缓存上面是内存,内存再往上就是硬盘了。可以看到越是接近CPU的计算核心存储容量越小,速度越快,反之则容量越大,速度越慢。这就是CPU的内存结构。应该很好理解吧为什么要使用缓存?简单来说,使用缓存是为了提高效率,跟平时我们在原创 2020-10-15 14:08:39 · 320 阅读 · 0 评论 -
JVM调优实战:四、类加载以及双亲委派机制
接上节我们了解了class文件是如果被加载进JVM的,本节讲讲class被加载进JVM后是如何执行java代码的。Java执行代码的大致流程JVM执行Java代码大致有8个步骤,下面用一张图全部描述清楚1.启动虚拟机(C++创建)2.创建一个引导类加载器实例(BootstrapClassLoader)3.C++调用Java代码创建JVM启动器,创建sun.misc.Launcher实例(该类由引导类加载器加载创建其他的类加载器)4.sun.misc.Launcher.getLauncher(原创 2020-09-29 15:33:23 · 295 阅读 · 0 评论 -
JVM调优实战:三、Class文件是如何被加载到JVM的?
Class文件是如何被加载到JVM的?前面我们讲了class的文件结构,相信大家对class文件的构成以及他们之间的排列顺序都有了比较深的了解。说一个小伙伴可能会问的问题,了解学习class文件结构有什么用?工作也用不上它,我们也没有达到发明一门语言的高度,还没法创造一门语言,然后将这门语言变成class文件丢到JVM上运行。这个其实就像你学习古诗词一样,你说学习古诗词有什么用?至少能提高你的审美以及文化水平吧,那么了解class文件结构,起码能让你更加了解底层代码的运行原理,提高技术的认知水平,而且你原创 2020-09-28 18:26:17 · 306 阅读 · 0 评论 -
JVM调优实战:二、Class的文件结构
什么是Class文件?Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在class文件中,中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序。Java虚拟机规范规定,Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表。无符号数无符号数是基本数据类型,主要可以用来描述数字、索引符号、数量值或者按照UTF-8编码构成的字符串值,大小使用u1、u2、u4、u8分别表示1字节、2字节、4字节和8字节。原创 2020-09-26 15:54:21 · 266 阅读 · 0 评论 -
JVM调优实战:一、JVM基础概念
什么是虚拟机?我们现在说的虚拟机,从字面上理解就是虚构出来的一台计算机,这个理解是对的,没错,虚拟就就是虚构出来的一台计算机。既然它是一台计算机,那么计算机就有他自己的CPU,自己的指令集,也就是我们说的汇编语言,也有自己的内存管理机制,比如JVM里面的栈、堆、方法区等等。一个跨语言的平台我们明白了什么是虚拟机,接下来我们来讲JVM虚拟机。JVM经过这么多年的发展,现在我们可以称它为一个跨语言的平台。java叫跨平台的语言,这个大家都了解,作为JVM虚拟机来讲,目前能在JVM上跑的语言有一百多种,除原创 2020-09-24 00:09:13 · 199 阅读 · 0 评论