java中 stack与和heap的区别

java的内存分为栈(stack)和堆(heap);

1、栈(stack)

 (1)定义

        每个应用运行时都有自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值以及对象的引用,这叫stack。

  (2)优缺点

    优点:存取速度比堆快,仅次于CPU中的寄存器。另外,

    缺点:存在栈中的数据的大小与生存期必须是确定的,所以缺乏灵活性。

  2、堆(heap)

  (1)定义

       堆是JVM的内存数据区。Heap的管理很复杂,每次分配不定长的内存空间专门用来保存对象的实例(实际上是保存对象实例的属性值,属性的类型和对象本身的类型标志等),并不保存对象的方法(方法是指令,保存在栈中)。

   (2)优缺点

        优点:堆是一个运行时的数据区,它的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,java的垃圾收集器会自动收走这些不再使用的数据。

       缺点:由于在运行时动态分配内存,存取速度比较慢。

阅读更多
文章标签: java 内存
个人分类: Java
想对作者说点什么? 我来说一句

Heapjava实现

Heap简单实现

u014452858 u014452858

2015-04-02 22:24:53

阅读数:650

javaheapstack区别

暂无

fxh13579 fxh13579

2017-11-27 21:26:25

阅读数:64

没有更多推荐了,返回首页

不良信息举报

java中 stack与和heap的区别

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭