做个动态网站多少钱国际新闻界期刊
大家好,经过前两篇文章的介绍,大家对数组也有了一定了解,其实所有的数组都是对象,我们在方法中引用数组的变量叫做引用变量(简称引用),那么数组到底是存放在哪里的呢,为什么引用再出方法后被销毁而数组只要有变量还在引用便能继续保存呢,那么就要来了解我们JVM的内存区块了,那么话不多说,我们就来看看。
JVM对所使用的内存接定功能的不同进行了划分:
.程序计数器(PC Register):只是一个很小的空间.保存下一条执行的指令的地址.
.虚拟机栈(JVM Stack):与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含有:
局部变量表,操作数栈,动态链接,返回地址以及其他的一些信息,保存的都是与方法执行时相关的一些信息.比如:局部变量.当方法运行结束后,栈桢就被销毁了,即栈帧
中保存的数据也被销毁了.
.本地方法栈(Native Method Stack):本地方法栈与虚拟机栈的作用类似,只不过保存的内容是Native方法的局部变量.在有些版本的JVM实现中(例如HotSpot),本地方法栈和虚拟机栈是一起的.
.堆(Heap):JVM所管理的最大内存区域.使用new创建的对象都是在堆上保存(例如前面的new int[](1,2,3)),堆是随着程度序开始运行时而创建,随着程序的退出的销毁,堆中的数据只要还存在使用,就不会销毁.这就解释了为什么数组能在引用销毁时仍然起作用.
注意:当对象无引用变量引用时便会被销毁,这个过程是java内部自动实现的,无须用户自己实现.
.方法区(Method Area):用于存储已被虚拟机加载的类信息,常量.静态变量,即时编泽器编译后的代码等数据:方法编译出的字节码就是保存在这个区域.
下面配上我手绘的图帮助大家理解这部分内容:
那么大家对JVM有没有一定了解呢,那么今天分享就到这里,谢谢大家!!!