字节码执行指令
https://cloud.tencent.com/developer/article/1333540
方法区存在的意义?
- 存储后期长期使用的变量,如静态常量池、运行时常量池
Java程序的执行过程?
JDK和JRE和JVM的区别?
- JVM只是一个翻译,根据不同操作系统,将Class翻译成对应机器码
- JRE是Java运行时环境,提供基础类库,如操作文件、连接网络、I/O等等。
- JDK是建立在JRE之上,提供编译代码(javac.exe)、打包代码(java)、反编译代码(javap)等工具
JVM的跨平台与语言无关性?
- 跨平台: JVM因屏蔽了操作系统的差异,可以将字节码翻译成对应OS的机器码
- 语言无关性: 除了Java,如Scale、Grovvy语言也拥有
JVM整体知识模块
Java运行时数据区域
Java方法的虚拟机栈
- 存储当前线程运行Java方法所需的数据,指令,返回地址
- 栈帧: 局部变量表+操作数栈+动态连接+方法返回地址+附加信息
- 栈溢出: JDK5之前如果递归深度超过256K就会栈溢出,如果JDK5之后如果递归深度1M就会栈溢,代码递归无终止条件或者循环次数太多导致的
- -Xss:设置虚拟栈的内存大小
程序计时器
- 指向当前线程正在执行的字节码指令的地址