jvm理论】的更多相关文章

三大流行jvm sun HotSpot ibm j9 BEA JRockit Oracle 会基于HotSpot整合 JRockit. jvm运行时数据区 java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器 1.线程私有,随线程而生,随线程而灭. 2.如果线程在执行java方法,计数器记录正在执行的虚拟机字节码指令的地址. 3.如果线程在执行native方法,计数器值为空. java虚拟机栈 1.线程私有,随线程而生,随线程而灭. 2.java方法执行的内存模型:局部变量表.操…
Java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成. 基本数据类型 1.除了long和double类型外,每个变量都占局部变量区中的一个变量槽(slot),而long及double会占用两个连续的变量槽. 2.大多数对于boolean.byte.short和char类型数据的操作,都使用相应的int类型作为运算类型. 加载和存储指令 1.将一个局部变量加载到操作栈:iload…
当JVM运行Java程序的时候,它会加载对应的class文件,并提取class文件中的信息存放在JVM的方法区内存中. Class文件组成 1.Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按顺序紧凑排列在Class文件中,中间没有分隔符.所以Class文件中存储的内容几乎全部是程序运行的必要数据. 2.当遇到占据8位字节以上空间的数据项时,会按照高位在前的方式, 分割成若干个8位字节进行存储. ClassFile { u4 magic; u2 minor_version;…
三大流行jvm sun HotSpot ibm j9 BEA JRockit Oracle 会基于HotSpot整合 JRockit. jvm运行时数据区 java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器 1.线程私有,随线程而生,随线程而灭. 2.如果线程在执行java方法,计数器记录正在执行的虚拟机字节码指令的地址. 3.如果线程在执行native方法,计数器值为空. java虚拟机栈 1.线程私有,随线程而生,随线程而灭. 2.java方法执行的内存模型:局部变量表.操…
案例1 public class Demo { public int calc(){ int a=100; int b=200; int c=300; return(a+b)*c; } public static void main(String[] args){ Demo demo = new Demo(); demo.calc(); } } 分析 javap生成 javac Demo.java javap -v Demo.class…
字符串常量池-常量项(cp_info)结构 CONSTANT_String_info{ u1 tag=8; u2 string_index;//存放 CONSTANT_Utf8_info 指针 } CONSTANT_Utf8_info{ u1 tag=1; u2 length;//字节数组长度 u1 bytes[length];//使用utf8编码后的字节数组 } 案例1 public class StringDemo { private String s1="字符串S1"; } ja…
jvm内存占用模型 对象的内存结构 对象头 Header 包含两部分数据Mark Word和Kclass: Mark Word:存储对象自身的运行时数据,如hashCode.GC分代年龄.锁状态标志.线程持有的锁.偏向线程ID.偏向时间戳等.这部分数据的长度在32位和64的虚拟机(未开启指针压缩)中分别为4B和8B,官方称之为”Mark Word”. 类型指针 Kclass:即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例. 如果对象是一个Java数组,那再对象头中还…
一.jvm理论 1.1.jvm理论-总述 1.2.jvm理论-class文件 1.2.1.jvm理论-常量池-string 1.2.2.jvm理论-常量池-8种基本类型 1.3.jvm理论-字节码指令 1.4.jvm理论-字节码指令案例 1.5.jvm理论-虚拟机类加载 1.6.java理论之运行时数据区 二.jvm工具 2.1.java工具总述 三.jvm实战 3.1.jvm调优实战 java虚拟机是什么 “java虚拟机”可能指以下三种东西:1).抽象规范:2).一个具体的实现:3).一个运…
2020年02月06日22:25:51 完成了Springboot系列的学习和Kafka的学习,接下来进入JVM的学习阶段 深入理解JVM 学习方法论 如何去学习一门课程--方法论 多讨论,从别人身上发现优点. 从人去学习:更为高层次的方式.从有经验的人身上学习闪光点(成本低,看书.但是因为不是自己经历的,要学会去发现被人的优点) 从事去学习:我们可能自己经历过的事情,我们会有自己的想法,自己踩到坑了,经历过了,失败过了.(成本更高,不撞南墙不回头) 写笔记,写微信公众号,写博客.自己输出,转化…
GC的概念 GC:Garbage Collection 垃圾收集.这里所谓的垃圾指的是在系统运行过程当中所产生的一些无用的对象,这些对象占据着一定的内存空间,如果长期不被释放,可能导致OOM(堆溢出). 内存区域中的程序计数器.虚拟机栈.本地方法栈这3个区域随着线程而生,线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作,每个栈帧中分配多少内存基本是在类结构确定下来时就已知的.在这几个区域不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了.而Jav…