博主首页

JVM笔记(虚拟机各内存的介绍)

                            JVM笔记

     java代码执行分为两部分:javac编译     java执行

    代码并不是由上往下执行的,会经过编译期重排序进行优化,存在依赖关系的代码不会被重排序,保证了代码最终执行结果的正确性!

     java虚拟机规范,运行时数据区通常包括:

             程序计数器(Program Counter Register)

             java栈(VM  Stack)

             本地方法栈(Native Method Stack)

             方法区(Method  Area)

             堆(Heap)

 

    * 不同的虚拟机厂商有不同的实现方式

 

程序计数器:

    程序计数器是用来指示执行哪条指令的,每个线程都需要有自己独立的程序计数器,并且不能互相被干扰,否则会影响正常的执行顺序。

 

java栈

    也就是我们常说的栈,函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配,栈内存中的数据,没有默认初始值,需要手动设置。

 

本地方法栈

    本地方法栈和java栈的作用和原理非常相似,区别只不过是java栈是为执行java方法服务的,而本地方法栈则是为执行本地方法服务的

 

方法区

    方法区在jvm中也是一个非常重要的区域,它与堆一样,是被线程共享的区域,在方法区中,存储了每个类的信息(包含类的名称,方法信息,字段信息)、静态变量、常量以及编译器编译后的代码等。

 

    堆内存用来存放new创建的对象,堆内存中的实体是用来封装数据的,这些数据都有默认初始值,堆内存中的实体不再被指向时 ,jvm会启动垃圾回收机制。 

 

运行类过程:方法区找到方法--堆中实例化对象--调用栈(指向堆中实例)

posted @   笑~笑  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示