JVM基础与原理
介绍Java虚拟机基础知识与基本原理,了解Jvm在实际项目中的应用,充分了解Jvm在性能优化方面发挥的真正作用。
帅帅的Max
自强不息,厚德载物
展开
-
深入理解JVM:性能分析与监控工具
这里是引用原创 2020-12-29 23:42:03 · 233 阅读 · 0 评论 -
深入理解JVM:常见的垃圾收集器
这里是引用原创 2020-12-27 23:37:15 · 91 阅读 · 0 评论 -
深入理解JVM:晚期(运行期)优化
Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”(Hot Spot Code)。即时编译器(JIT编译器)解释器与编译器编译对象与触发条件查看及分析即时编译结果编译优化技术公共子表达式消除数组范围检查消除方法内联逃逸分析...原创 2020-12-04 22:55:39 · 211 阅读 · 0 评论 -
深入理解JVM:早期(编译期)优化
什么是Java语言的编译,就是将我们写的.java文件转变成.class文件的过程。也叫前端编译器(或者编译器前端),其实Java语言的“编译期”是一段“不确定”的操作过程。1.编译器简介前端编译器:Sun的Javac,Eclipse JDT中增量式编译器(ECJ)。把*.java文件编译成*.class文件,这是最符合我们对于Java程序编译认知的一类编译器。JIT编译器:HotSpot VM的C1,C2编译器。虚拟机的后端运行期编译器,把字节码转变成机器码的过程,此类编译器对于程序的“优.原创 2020-11-28 23:24:09 · 219 阅读 · 1 评论 -
一张线上JVM参数配置清单
对虚拟机的调优离不开JVM参数的配置,很多开发者对于生产环境JVM参数的配置少之又少,其原因是都是提前由运维或者架构师结合硬件指标以及应用本身配置好了,所以很多开发者都很难接触到线上JVM参数的配置。但是可以通过查看线上的配置,了解这些JVM参数的配置及其含义非常重要。常见JVM参数配置清单硬件参考:4核CPU,8G内存虚拟机参数描述线上设值参考-Xss每个线程的堆栈大小,每个版本的默认值都不同一般采用默认值-Xms最小堆内存-Xms5g-Xmx最大堆内.原创 2020-10-30 08:10:08 · 653 阅读 · 0 评论 -
程序员快乐之GC日志分析实战
阅读GC日志是处理Java虚拟机内存问题的基础技能,然而GC日志仅仅是认为确定的规则,倒是没有什么技术含量,和分析排查自己系统线上错误日志基本类似。1.如何打印GC日志打印GC日志非常简单,只要配置一下GC打印参数即可,接下来通过一个程序来看看如何查看GC日志。1.1编写测试程序/** * @Description:GC日志打印与OOM测试 */public class GcLogDemo { public static void main(String[] args) .原创 2020-10-24 11:24:36 · 195 阅读 · 0 评论 -
深入理解JVM:常见垃圾收集算法
在C,C++语言中,程序的内存使用空间都是靠程序员手动进行分配和回收的。但是在Java语言中,垃圾回收都是交给虚拟机自动完成。1.理解垃圾收集对于垃圾收集(Garbage Collection,GC),我们必须要提出灵魂三问:哪些内存需要回收?什么时候回收?如何回收?虽然说内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那么为什么还要去了解GC和内存分配呢?答案是:当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这.原创 2020-10-12 23:53:36 · 2088 阅读 · 0 评论 -
深入理解JVM:字节码指令详解
字节码指令集是一种具有鲜明特点,优劣势都很突出的指令集架构,这些都是优秀人才的思想结晶,正式因为如此,Java语言才能得以广泛流行和快速发展。在各行各业的软件发展中占据了举足轻重的作用。1.前言当前学习的知识是字节码指令相关的知识,和上一篇的class文件格式一脉相承。学好字节码指令对于深入理解JVM有更好的帮助,能够清除的了解各种字节码指令的含义与作用。Java虚拟机你的指令由一个字节长度的,代表着某种特定操作含义的数字(成为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(成为操.原创 2020-10-11 23:19:43 · 344 阅读 · 0 评论 -
深入理解JVM:class文件结构分析
代码编译的结果就是将我们写的语言代码变为字节码,这是存储格式发展的一小步,确实编译语言的一大步。“字节码文件”是平台无关性的基石。一.语言无关性概述实现语言无关性的基础仍然是虚拟机和字节码存储格式。作为一个通用的,和机器无关的执行平台,Java虚拟机不与任何语言绑定,只与“Class文件”这种特定的二进制文件格式关联,也就是不关心Class的来源是何种语言,不管是用Java编译的Class文件,还是用JRuby编译的Class文件,JVM都可以做到执行处理。二.Class类文件结构1.Clas.原创 2020-10-11 18:26:21 · 252 阅读 · 2 评论 -
深入理解JVM:类加载机制解析
我们写的Java程序不会无故运行起来,需要底层的软硬件支持,java程序运行所需的内存等资源都需要通过jvm来申请,可以说JVM是Java程序运行的母体,那么程序是如何在Java虚拟机中运行起来的,接下来就来分析一下类加载机制。1.类加载机制概述虚拟机把描述类的数据class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。2.类的生命周期class文件从被加载到虚拟机内存中开始,到卸载出内存为止,整个生命周期包括:加载(L.原创 2020-10-08 22:42:15 · 132 阅读 · 0 评论 -
深入理解JVM:Java语言与JVM关系
在那个电闪雷鸣,群鸟环绕的夜晚,一个不为人知的语言Oak诞生了,此时正值1991年4月份,气温舒适,百花齐放。然而Oak的诞生并没有得到人们的关注,直到1995年5月23号,Oak决定正是更名为Java,并喊出了 “Write Once,Run Anywhere”(一次编写,随处运行)的口号,真是一语惊天雷,从此震乾坤。Java语言作为世界上最为流行且用户使用量最多的语言,由当时的懵懂少年,已然成为了现在的稳重青年。他怀揣梦想,肩负使命,不断在信息化的时代披荆斩棘,破浪前行。一幅图足以说明其成长历史。.原创 2020-10-08 12:05:23 · 759 阅读 · 0 评论