JVM深入学习
文章平均质量分 75
深入了解jvm的底层机制,更加熟练地用java写出高效率的代码。
legendaryhaha
legendaryhaha的博客
展开
-
三色标记(可达性分析算法)及一些思考
Java对象存活的判断、可达性分析算法及三色标记原创 2022-02-08 21:37:36 · 2757 阅读 · 1 评论 -
JVM|类加载机制
类加载机制前言正文类加载机制类加载时机附(几个字节码的含义)前言很早前就看了很多类加载机制的文章,但都零零碎碎的,此次借着阅读深入理解Java虚拟机一书的契机,归纳一下碎片化的知识。正文类加载机制所谓的“类加载机制”并不单单指“加载”这一过程。我们的类在编译后会形成.class文件,在运行时,JVM先要将.class文件加载进虚拟机内存。这个过程,其实就是虚拟机将文件以一串二进制流的形式读到自己空间中来。上面表述可能不太正确,Java虚拟机规范并没有指出以哪种方式读取文件,可能是一串二进制流原创 2020-05-31 17:22:32 · 259 阅读 · 0 评论 -
Java之volatile的实现
volatilevolatile指令重排上一篇说了Java的内存模型,并留下“volatile的可见性就一定是立即可见的吗?synchronize了有为何还需要volatile?”的疑问,这篇文章试着讲讲它们的恩恩怨怨。volatile volatile有两层语义,第一层保证不同线程间的可见性;第二层则是禁止指令重排。针对第一层,我们在Java内存模型一文中已分析,它通过load...原创 2020-05-01 16:04:14 · 256 阅读 · 0 评论 -
JVM 内存间的交互操作
JVM 内存间的交互操作背景操作指令规约及思考总结Java的内存模型划分为主存和工作内存,那主存和工作内存如何协调呢?这些协调操作又有哪些呢?背景内存运行的速度已经够快了,但CPU寄存器、高速缓存却比其更快~为了充分利用这特性(资源),JVM规划了两块区域,工作内存和主存,其中工作内存对应CPU寄存器、高速缓存部分,主存即对应内存部分,而协调主存和工作内存上的相关的变量值则需要依靠一些...原创 2020-05-01 13:09:38 · 565 阅读 · 0 评论 -
JVM内存回收过程
JVM内存回收前言执法者死缓死刑整个流程图解上一篇Java内存分配前言在上一篇的内存分配中,我们可以知道,在JVM中,堆和方法区是线程共享的,程序计算器、JVM栈和本地方法栈是线程私有的,共享的一般都不能随意的消失,而私有的可以,即这些线程私有的区域可以随着线程的创建而创建,随线程的消亡而消亡。设想一个实例方法,编译后我们就可以知道它的类结构,要给它多少内存也是确定了的。当它被加载时,J...原创 2019-03-16 21:47:43 · 791 阅读 · 0 评论 -
JVM运行时内存分配机制
JVM运行时内存分配机制前言内存模型模型解析Java heap直接内存方法区程序计数器JVM Stack本地方法栈前言Java在内存管理方面不象C/C++那样,可以直接管理内存,而是将内存分配和内存管理的工作交托给JVM(Java虚拟机)。虽然这减轻了程序员的工作,但也带来了不好的一方面,开发人员若毫不关心内存的情况,可能会造成程序运行的低效且耗资源。另外,内存管理在不同的jdk版本中,管...原创 2019-03-16 17:04:08 · 742 阅读 · 0 评论 -
JVM概述
历史背景[图片选自百科]##在60多年前,骨灰级的程序猿是这样子干活的:写一段程序时,找出一条纸带或一张卡片,然后,往上面打孔,没错就是打孔!...原创 2018-10-21 01:31:21 · 275 阅读 · 0 评论 -
dump使用说明
dump使用说明前言内存dump线程dump前言dump经常用于分析JVM的内存、CPU的占用情况,JDK也有自带的可视化工具如Java visual,但由于我使用的是阿里云的Linux服务器,没有界面,所以日常的运维都是在window下通过远程连接,在Linux输出日志,拷贝到window下,借助IBM的ha456.jar工具分析其日志。关于ha456.jar的下载,直接点击此链接到官网...原创 2019-06-15 16:24:49 · 2956 阅读 · 0 评论