java虚拟机
文章平均质量分 80
我们一起学习下jdk8下的jvm的那些事
程序员ZZ的源码
学习、记录、思考~~
展开
-
java虚拟机:jvm的面试题有这一篇就够了~~~
java虚拟机:jvm的面试题有这一篇就够了~~~原创 2021-03-11 13:51:51 · 448 阅读 · 2 评论 -
java虚拟机:ClassLoader分析
ClassLoader原创 2017-02-19 18:16:01 · 523 阅读 · 0 评论 -
java虚拟机系列:我们聊一聊类文件结构
Class文件是一组8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储的,...原创 2018-09-21 22:37:05 · 1234 阅读 · 1 评论 -
java虚拟机系列:java虚拟机类加载机制
类加载机制:虚拟机把描叙类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载的时机类加载的生命周期包含:加载、验证、准备、解析、初始化、使用、卸载。其中,验证、准备、解析3个部分称为链接。虚拟机对于类的初始化阶段严格规定了有且仅有只有5种情况如果对类没有进行过初始化,则必须对类进行“初始化”!遇到new(实例化对象)...原创 2018-09-24 10:03:52 · 170 阅读 · 0 评论 -
java虚拟机系列:虚拟机字节码执行引擎
java虚拟机的执行引擎都是一致的:输入字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。过程##### 运行时栈帧结构栈帧(Stack Frame)是用于虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。每一个方法从调研开始至执行的过程,...原创 2018-09-24 22:04:24 · 195 阅读 · 0 评论 -
java虚拟机系列:内存分配和回收策略
详细介绍jvm的内存分配和回收策略原创 2018-08-29 19:03:56 · 2723 阅读 · 1 评论 -
java虚拟机系列:java虚拟机内存模型
java内存模型,分为程序计数器,虚拟机栈,本地方法栈,java堆,java栈。根据受访的权限不同设置,可以分为线程共享和线程私有。线程共享指可以允许所有的线程共享访问的一类内存区域,包括堆内存区,方法区,运行的常量池。程序计数器(Program Counter Register)在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通...原创 2018-08-02 14:39:25 · 6121 阅读 · 0 评论 -
java虚拟机系列:对内存溢出的思考
jvm内存溢出JVM管理的几个内存区域分为:方法区:用于存储JAVA类信息、常量、静态变量。这个区域也可以发生垃圾回收,比如当一些类不在被引用时JVM可以卸载这个类,不过这种回收动作很少发生。另外所有线程都共享方法区,因此线程对方法区的访问被设计为线程安全的。虚拟机栈:JAVA虚拟机栈是线程私有的,每当启动一个新线程时,JVM都会为它分配一个JAVA虚拟机栈。每当线程调用方法时,JVM都会...原创 2018-09-18 12:34:57 · 5010 阅读 · 0 评论 -
java虚拟机系列:垃圾回收算法
GC需要完成三件事:1,哪些内存需要回收?2:什么时候回收?3:如何回收? Java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束...原创 2018-08-05 15:16:42 · 13388 阅读 · 4 评论 -
java虚拟机系列:垃圾收集器
垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、火车算法)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别. 图中展示了7种不同分代的收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;而它们所处区域,则表明其是属于新生代收集器还是老年代收集器:新生代收集...原创 2018-08-19 15:43:41 · 15454 阅读 · 3 评论 -
java虚拟机系列:如何使用jmap
jmap作用,获取dump文件,查询finalize执行队列,java堆栈以及类加载器统计。显示堆栈信息[@82995c215909 /opt/logs]$ jmap -heap 12527 Attaching to process ID 12527, please wait… Debugger attached successfully. Server compiler detec...原创 2018-07-24 20:38:50 · 1040 阅读 · 0 评论 -
java虚拟机系列:如何使用VisualVM
详细介绍使用VisualVM的注意事项原创 2018-07-29 18:32:30 · 1189 阅读 · 0 评论 -
java虚拟机系列:jstat命令使用
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 查看远端的: [protocol:][//]lvmid[@hostname[:port]/servername] 类加载统计:[@c9db8f728f0d /opt/logs]$ jstat -class 237Loaded B...原创 2018-07-14 17:02:20 · 5071 阅读 · 0 评论 -
java虚拟机系列:如何使用jstack
语法 [@82995c215909 ~]$ jstack -h Usage: jstack [-l] (to connect to running process) jstack -F [-m] [-l] (to connect to a hung process) jstack [-m] [-...原创 2018-07-25 20:17:30 · 330 阅读 · 0 评论 -
java虚拟机系列:jhat虚拟机堆栈转存快照分析工具
用法jhat -h Usage: jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <f原创 2018-07-25 20:04:32 · 604 阅读 · 1 评论 -
java虚拟机系列:如何使用jps命令
列出正在运行的虚拟机进程,并显示虚拟机执行主类(main class, main()函数所在的类)名称,以及这些进程的本地虚拟机Id(LVMID)。使用方法:在当前命令行下打jps(jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path) 。➜ ~ jps7808 Launcher2803 Main5635 Remote...原创 2018-07-13 20:05:13 · 2123 阅读 · 0 评论 -
java虚拟机系列:如何使用jinfo命令
jinfo 用法➜ ~ jinfo --helpUsage: jinfo [option] <pid> (to connect to running process) jinfo [option] <executable <core> (to connect to a core file) jinfo...原创 2018-07-19 20:08:42 · 1006 阅读 · 0 评论