浅析JVM内存模型

对于初学JAVA的人来说弄懂虚拟机JVM内存分布模式是很有必要的
首先我们要大致明白配置JDK环境变量的用途
1、环境变量、
如何配置环境变量,在上一篇文章我已经做过详细的说明,这里再次强调一次,不要用单纯的java、javac、或者java-version来判断是否安装成功,应该三者一起用。
javac的作用是将我们的可读的java源文件文件编译成让jvm或者是cpu能够识别的字节码文件(.class)
java的作用是将我们编译的.class字节码解释成电脑运行的程序
所以单一去验证jdk的安装是不严谨的,两者是单独成立的
2、JVM内存模式分布
这里很抽象,看不到摸不着,但是弄明白很有必要,因为所有的数据都在内存里面保存着。有句话是little and often,坚持学习。

jvm内存模型:方法区、堆、程序计数器 、本地方法栈、虚拟机栈
这里针对方法区、栈、堆、程序计数器做一个说明
这里我们来说个流程:
程序(非多线程)开始运行的时候,在系统中会自动分配一个栈,这个时候程序计数器就开始起到作用了,它会指示jvm对编译之后的字节码的执行方向,同时在执行一个方法的时候就会在栈中分配一个属于方法一个栈帧,方法的局部变量都会存放在这个栈帧中,其生命周期随着方法的结束而释放,这里强调一点的是先进后出的逻辑,堆中的数据当没有对象引用的时候就成了孤立数据,此时就会被GC垃圾回收器对其进行内存释放。
方法区包含了常量池:存放类信息、常量、静态变量、即时编译器编译后的代码等。其中静态成员变量在类装载的时候就进行了创建,在整个程序结束时按序销毁。

静态成员变量在类装载的时候就进行了创建,在整个程序结束时按序销毁。
实例变量在类实例化对象时候创建,在对象销毁的时候销毁。
局部变量在局部范围使用时创建,跳出局部范围销毁

猜你喜欢

转载自blog.csdn.net/qq_20617983/article/details/81408342