[转]jvm堆和栈的区别

orezero orezero     2022-08-07     551

关键词:

物理地址

堆的物理地址分配对对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种算法。比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩)

栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。

内存分别

堆因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。

栈是连续的,所以分配的内存大小要在编译期就确认,大小是固定的。

存放的内容

堆存放的是对象的实例和数组。因此该区更关注的是数据的存储

栈存放:局部变量,操作数栈,返回结果。该区更关注的是程序方法的执行。

PS:

  1. 静态变量放在方法区
  2. 静态的对象还是放在堆。

程序的可见度

堆对于整个应用程序都是共享、可见的。

栈只对于线程是可见的。所以也是线程私有。他的生命周期和线程相同。

转自:http://www.cnblogs.com/ansn001/p/5925748.html

jvm堆和栈的区别

 栈内存: 程序在栈内存中运行 栈中存的是基本数据类型和堆中对象的引用 栈是运行时的单元 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据 一个线程一个独立的线程栈  堆内存:... 查看详情

jvm中堆和栈的区别

1、栈是线程私有的;堆事线程公有的。2、栈主要用于存储局部变量和对象的引用变量;堆主要用于存储实例化的对象,数组,由JVM动态分配内存空间。3、栈中的变量超过其作用域后,JVM会自动释放掉为该变量所分配的内存空间... 查看详情

堆和栈的区别(转)

非常经典的解释=_=堆和栈的区别一、预备知识:程序的内存分配  一个由C/C++编译的程序占用的内存分为以下几个部分:  1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方... 查看详情

jvm中堆和栈的区别

...一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(LastInFirstOu... 查看详情

堆和栈的区别

在说栈和堆之前,我们先说一下JVM(虚拟机)内存的划分:     Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存... 查看详情

堆和栈的概念和区别

在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分:     Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存... 查看详情

jvm堆和栈的区别

...的大小,-Xmx选项可以设置堆的最大值。 这就是Java中堆和栈的区别。理解好这个问题的话,可以对你解决开发中的问题,分析堆内存和栈内存使用,甚至性能调优都有帮助。 查看详情

(转)内存堆和栈的区别

原文: http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数... 查看详情

堆和栈的区别

本人是在网上看了几篇博客加深对堆和栈的了解,内容转自几篇博客,所以内容会比较多,切可能相互重复,但是肯定能让你对堆和栈有详细的认识。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~版块一这个十... 查看详情

堆和栈的区别

堆和栈的区别是什么?首先,讨论的堆和栈指的是内存中的“堆区”和“栈区”,OC语言是C语言的超集,所以先了解C语言的内存模型的内存管理会有很大的帮助。C语言的内存模型分为5个区:栈区、堆区、静态区、... 查看详情

堆和栈的区别

栈:自动回收堆:1.内存地址 2.初始化默认值3.垃圾回收机制inta =5; 在栈中。int[]b=null; 此时null代表不指向任何堆。int[]c=newint[5];在堆中开辟一块空间。此时c指一块内存地址。=======================学习黑马java视频学习... 查看详情

堆和栈的区别

  内存中的堆和栈---  堆:  是程序员手动申请的空间,空间用完需要程序员自己手动释放,也可能会由OS回收,分配方式类似链表;  堆比较大,地址向上增长;  堆一般存放对象  栈:  是系统申请的空间,空间用完系统... 查看详情

值类型和引用类型的区别i数据结构中的堆和栈和内存中的堆和栈的区别(代码片段)

值类型和引用类型的区别I数据结构中的堆和栈和内存中的堆和栈的区别一、值类型和引用类型二、值类型和引用类型的区别三、数据结构中的堆和栈和内存中的堆和栈的区别(一)数据结构中的堆和栈1.栈:装数据的... 查看详情

java中的堆和栈的区别

...一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(LastInFirstOu... 查看详情

java中的堆和栈的区别

...一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(LastInFirstOu... 查看详情

堆和栈的区别引用类型和值类型的区别lambda表达式

堆和栈的区别引用类型和值类型的区别lambda表达式视频:034-引用类型B站:IT萌叔Jack 查看详情

堆和栈的区别详解

...程序设计的时候、堆栈总是不可避免的会接触到、而对于堆和栈他们的区别、在程序运行时各自的作用,如何利用堆栈提高运行效率等很多人都还了解的不够,今天google了很多文章,所以在这里作个完善总结,希望能给有心人些... 查看详情

堆和栈的区别

 一、预备知识—程序的内存分配   一个由C/C++编译的程序占用的内存分为以下几个部分   1、栈区(stack)—  由编译器自动分配释放  ,存放函数的参数值,局部变量的值等。其  &... 查看详情