学习jvm遇到的问题

在这里插入图片描述
q1:Java编译器是什么?
a:JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具。
编译时首先读入java源程序(即在MS-DOS命令行下键入javac HelloWorld.java等文件名参数和其他选项参数),然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成中间代码即字节码,字节码文件名和源文件名相同,扩展名为.class。—来自百度百科
javac.exe可以简单看成是Java编译器。

其中运行时数据区如下:
在这里插入图片描述
堆和方法区是线程共享的,Java栈,本地方法栈,程序计数器是线程私有的。
我的简单理解:
1.Java栈部分,存放一些栈帧,栈帧内容如下:
在这里插入图片描述
a.栈帧: 线程执行一个方法时,就会随之创建一个对应的栈帧,并将建立的栈帧压栈。当方法执行完毕之后,便会将栈帧出栈。
b.局部变量表:存放局部变量,包括在方法中声明的非静态变量以及函数形参。基本类型数据直接存,引用类型的数据存地址,栈指向堆可能是这个意思。
2.本地方法栈,是为执行本地方法(Native Method)服务的。
a.本地方法:一个Native Method就是一个Java调用非Java实现的方法,为什么要调用非Java实现的方法,参考这里,第二部分。
3.程序计数器
4.堆用来存储对象本身的以及数组,引用放在栈中。
5.方法区,存放类的信息,编译后的代码,Java虚拟机描述为堆的一个逻辑部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值