java堆和jvm堆有啥区别吗?
一、java堆和jvm堆的区别
java堆和jvm堆的区别是:java堆是完全二叉树实现的,有大顶堆小顶堆等概念;jvm的堆是堆区-内存块。
Java堆
Java堆是垃圾收集器管理的主要区域,因此很多时候也被称作“GC堆”(Garbage Collected heap)。从内存回收的角度来看,由于现在收集器基本都采用分代收集算法,所以Java 堆中还可以细分为:新生代和老年代;在细致一点的有Eden空间、From Survivor空间、To Survivor空间等。从内存分配的角度看,线程共享的Java 堆中可能划分出多个线程私有的分配缓冲区。不过无论如何划分,都与存放内容无关,无论哪个区域,存储的都仍然是对象实例,进一步划分的目的是为了更好地回收内存,或者更快地分配内存。
jvm堆
jvm只有一个堆区(heap)被所有线程共享,堆区中不存放基本类型和对象引用,只存放对象本身。 堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。
延伸阅读:
二、JVM栈 (Java Virtual Machine Stacks)
每当启动一个新线程的时候,java虚拟机都会为它分配一个java栈。java以栈帧为单位保存线程的运行状态。虚拟机只会对java栈执行两种操作:以栈帧为单位的压栈或者出栈。
每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 。
每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。 以上就是关于java堆和jvm堆区别的内容希望对大家有帮助。

相关推荐HOT
更多>>
什么是流式分析?
一、什么是流式分析流式分析是指对数据记录进行连续不断地处理和分析,而不是分批进行。通常,流式分析对于在生成数据时连续发送少量数据(通常...详情>>
2023-10-11 22:36:50
实施 GRC 面临哪些挑战?
一、实施 GRC 面临哪些挑战?当企业将 GRC 组件集成到组织活动中时,他们可能会面临挑战。1、变更管理GRC 报告提供了指导企业做出准确决策的见...详情>>
2023-10-11 19:35:31
主要的路由协议有哪些?
一、主要的路由协议有哪些?路由协议是一组规则,用于指定路由器如何识别和转发网络路径上的数据包。路由协议分为两个不同的类别:内部网关协议...详情>>
2023-10-11 18:31:31
VC中的MFC的几种SDI?
一、VC中的MFC的几种SDI区别SDI就是记事本类程序的标准模式;MDI就是word类程序的标准模式;对话框就不用多说了,系统设置、文件属性等等很多配...详情>>
2023-10-11 18:10:35