重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
cdn.xitu.io/2019/11/12/16e5ea36aa6e617d?w=477&h=178&f=png&s=90057">
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、娄底ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的娄底网站制作公司
JVM是Java的核心和基础,在Java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行Java的字节码程序。
java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。
这里就给大家讲一下JVM。
JDK: java development kit (Java开发工具包) 编译、反编译、调试等。
JRE: java runtime enviroment (Java运行环境)
JVM: java Virtual Mechinal (Java虚拟机) 一次编写,到处运行!
提升代码质量、解决项目问题。
面试!面试!还是面试!
类加载器:Class字节码文件加载到内存
执行引擎:解析字节码指令,得到执行结果
运行时数据区
线程私有
线程共享
JVM什么情况下会发生栈内存溢出?
JVM中一次完整的GC流程是怎样的?
程序计数器
指向当前线程正在执行的字节码指令的地址(行号)
栈(Stack)
FILO
虚拟机栈
创建一个线程就为线程分配一个虚拟机栈,它又会包含多个栈帧,因为每运行一个方法就创建一个栈帧。
栈帧
运行一个线程中的一个方法
深入理解虚拟机栈
演示一段代码的方法的执行过程
代码:
public int calc(){
int a=100;
int b=200;
int c=300;
return(a+b)*c;
}
StackOverFlowError异常
栈容量 -Xss 默认1M
OutOfMemeoryError异常
Java堆
元数据区
直接内存