Java语言基础-JVM内存模型

一、什么是JVM

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。

对于JVM自身的物理结构,我们可以从下图鸟瞰一下:
《Java语言基础-JVM内存模型》

二、JVM内存管理和垃圾回收

JVM内存划分,人为的根据不同内存空间的存储特点以及存储的数据:
程序计数器:当前线程所执行的字节码的行号指示器
本地放发栈:为虚拟机使用的native方法服务

Java虚拟机栈:描述Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链表、方法出口等信息。
每个一方法创建一个栈针,栈帧存放了当前方法的数据信息(局部变量),当方法执行结束,该方法的栈栈帧就被销毁了。

Java堆:被所有线程共享的一块内存域,在虚拟机启动时创建。所有的对象以及数组都要在堆上分配(使用new关键字,就表示在堆中开辟一块新的存储空间)。

方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)
GC(Garbage Collection):垃圾回收器
Java的自动垃圾回收机制简单理解为:
程序员就不需要手动去控制内存的释放,当JVM发觉内存资源紧张的时候,就会自动地清理无用的对象(没有被引用到的对象)所占用的内存空间。

注意:Java的垃圾回收器,自动回收的堆内空间的内存;而栈空间的内存随着方法的执行结束,自动释放该方法的栈针内存
    原文作者:java内存模型
    原文地址: https://blog.csdn.net/github_26672553/article/details/53081169
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞