Java虚拟机
文章平均质量分 81
EBABEFAC
兴趣、初心、热情,坚持;怠惰是原罪;
20230530,还是得有一个地方分享下东西,不然自己容易怠惰
展开
-
用代码和图告诉你VisualVM中的线程的几种状态
VisualVM是压测过程中经常用到的一个工具,但是在分析过程中对其中的几种状态了解的不太清楚,通过查阅资源和代码中测试,基本搞懂了这些状态的区别。状态说明:Running处于这种状态的线程对于操作系统而言,要么是正在占用CPU时间片运行的线程,要么是已经就绪的线程,只要有CPU时间片分配到,就可以直接运行,对应Java中Runnable状态。Sleeping处于睡眠状态的线程...原创 2019-11-30 17:15:46 · 2647 阅读 · 0 评论 -
Java虚拟机:加载、链接与初始化
加载是根据特定名称查找类或接口类型的二进制表示,并由此二进制表示来创建类或接口的过程。 链接是为了让类或接口可以被Java虚拟机执行,而将列或接口并入虚拟机运行时状态的过程。 类或接口的初始化是指执行类或接口的初始化方法。在做一系列的动作之前,首先得把Java虚拟机启动吧,咱们先来说下Java虚拟机的启动过程:Java虚拟机的启动是通过引导类加载器创建一个初始类来完成的,这个类是由虚拟机的具体实原创 2017-06-16 16:30:48 · 373 阅读 · 0 评论 -
Java虚拟机:引言
对于java程序员来说,了解JVM的一些原理和执行过程还是挺有用的,通过JVM的学习,我们对java中的反射机制、多线程等就会有更清楚的认识。同时有利于调bug和优化代码。首先我们要明白,不管什么语言最终要想让计算机明白并执行,需要得到对应的机器码。java语言的源文件是以.java结尾的,也是我们直接操作的文件。Java虚拟机可以看成一台抽象的计算机,它能够直接识别的文件是.class文件。因此,原创 2017-06-13 13:54:26 · 545 阅读 · 0 评论 -
Java虚拟机:Java虚拟机结构
要去“正确地”实现一台Java虚拟机,其实并不像大多数人所想的那样高深和困难——只需要正确读取class文件中每一条字节码指令,并且能正确执行这些指令所蕴含的操作即可。class文件格式编译后被Java虚拟机所执行的代码使用了一种平台中立(不依赖于特定硬件和操作系统)的二进制格式表示,并且经常以文件的形式存储,因此这种格式称为class文件格式。原创 2017-06-13 20:08:33 · 566 阅读 · 0 评论 -
Java虚拟机:Java虚拟机编译器
Java虚拟机是为支持Java编程语言而设计的。Oracle的JDK软件包括两部分内容:一部分是将Java源代码编译成Java虚拟机的指令集的编译器,另一部分是用于实现Java虚拟机的运行时环境。术语“编译器”在某些场景下专指把Java虚拟机指令集转换为特定CPU指令集的翻译器。而在本博文中,编译器是指那种把Java语言编写的源代码编译为Java虚拟机指令集的编译器。有几个常用的JDK命令大家肯定都原创 2017-06-14 18:57:33 · 1156 阅读 · 0 评论 -
Java虚拟机:class文件格式
本博文目的:通过本片博文的阅读,希望大家能够能class文件格式有一个直观的认识,同时对其中的一些实现细节也能有一定的掌握。本文并不会说的太细,太细节化的东西,真的太多,涉及到一大堆属性和验证的过程。我都看烦了,不仅记不住,而且也不是我们所关心的东西。 每一个class文件都对应着唯一一个类或接口的定义信息,每个class文件都由字节流组成,多字节的数据项总是按照big-endian(大端在前)的顺原创 2017-06-15 15:42:42 · 466 阅读 · 0 评论 -
java虚拟机:详解jvm的内存布局和内存溢出异常
运行时数据区域主要包括如下几部分:堆(Heap)在这个多线程的架构体系中,咱们知道有的区域是线程私有的,而有的区域是线程共享的。对于堆区,就是线程共享的,不管是堆还是栈,底层都是一个物理机的主存而已,在此基础上,JVM进行了逻辑分块,有了堆、栈的概念,比如JVM认为物理地址0x0000~0x2321为堆区,他就是堆区了。堆是用来干什么的呢?java是面向对象的语言,所以用new创建一个对象...原创 2019-10-03 21:35:24 · 189 阅读 · 0 评论 -
java虚拟机:一篇让你了解垃圾收集策略和垃圾收集核心知识
什么是垃圾收集?在我们所看到的很多讲解JVM书籍知识的文章中,总会看到如下一句话:java和C++之间有一堵由内存动态分配和垃圾收集技术围成的“高墙”,墙外的人想进来,墙里的人想出去。感觉这句话挺有意思的,使用C++的程序员在管理内存方便有着至高无上的权利,内存的分配和释放都是由程序员直接控制的,如果分配了内存,但是忘记释放了,就会很容易出现内存溢出的问题,C++程序员饱受其折磨。而使用Jav...原创 2019-10-04 13:00:28 · 154 阅读 · 0 评论 -
Java内存模型:深入理解java内存模型和先行发生原则
在讲解java的内存模型之前,咱们先看看物理机上的内存模型。硬件的缓存结构正如上面所看到的,每一个处理器都会有自己独自的缓存,而且可能会有一层缓存时多个处理器是共享的,最底层一层的缓存连接着主存,相当于是主存的部分缓存数据。Java的内存模型上面的图虽然画的简陋了点,但也基本表明线程、工作内存、主内存的交互情况。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变...原创 2019-10-04 23:29:37 · 163 阅读 · 0 评论