深入Java虚拟机
文章平均质量分 52
codingjav
骑马Coding
展开
-
JVM脑图整理
原创 2021-08-21 20:49:20 · 173 阅读 · 0 评论 -
面试题之Java内存区域
基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 1、运行时数据区域 JDK1.8之前: JDK1.8: 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区 直接内存 (非运行时数据区的一部分) 2.1 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过原创 2021-08-21 17:34:10 · 227 阅读 · 0 评论 -
虚拟机性能监控与故障处理工具
1、jps:虚拟机进程状况工具 jps [ options ] [ hostid ] -q 只输出LVMID,省略主类名称 -m 输出虚拟机进程启动时传递给主类main()函数的参数 -l 输出主类的全名,如果进程执行的是jar包,输出jar路径 -v 输出虚拟机进程启动时的JVM参数 2、jstat:虚拟机统计信息监视工具 jst原创 2016-05-30 15:29:16 · 455 阅读 · 1 评论 -
自动内存管理机制
一:Java内存区域与内存溢出异常 在运行Java程序时,Java虚拟机会把管理的内存划分为若干个不同的数据区域。 Java虚拟机运行时数据区 数据区域图中,除了方法区和堆区是线程共享区外,其他三个是线程隔离的数据区(private) 程序计数器(Program Counter Register):属于线程私有的,占用的原创 2016-05-30 15:36:05 · 3240 阅读 · 1 评论 -
Class类文件结构、类加载机制以及字节码执行
一、Class类文件结构 Class类文件严格按照顺序紧凑的排列,由无符号数和表构成,表是由多个无符号数或其他数据项构成的符合数据结构。 Class类文件格式按如下顺序排列: 类型 名称 数量 u4 magic(魔术) 1 u2 minor_version(次版本号) 1 u2原创 2016-05-30 19:11:38 · 1280 阅读 · 1 评论 -
JAVA 虚拟机类加载机制和字节码执行引擎
引言 我们知道java代码编译后生成的是字节码,那虚拟机是如何加载这些class字节码文件的呢?加载之后又是如何进行方法调用的呢? 一 类文件结构 无关性基石 java有一个口号叫做一次编写,到处运行。实现这个口号的就是可以运行在不同平台上的虚拟机和与平台无关的字节码。这里要注意的是,虚拟机也是中立的,只要是符合规范的字节码,都可原创 2016-05-31 13:41:04 · 1123 阅读 · 1 评论 -
程序编译与代码优化
一早期(编译期)优化 1概述 Java语言的“编译期”是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,just in time compiler)把字节码转变成机器码的过程;还可能是指使用静态提前编译器(AOT编译器,ahead of time原创 2016-05-31 15:20:23 · 4481 阅读 · 3 评论