Thumbnail: jekyll

Java堆和栈解析

on under jekyll
1 minute read

Java把内存分为栈内存(Stack)和堆内存(Heap)。其主要区别和用途如下文所总结。

  • 栈内存:

1.栈内存的特点:存取速度快,仅次于CPU中的寄存器。存在栈中的数据大小和生存期必须是确定的,缺乏灵活性;栈内存的数据可以共享(已存在值再有变量时指向同一个地址);超过变量作用域自动释放掉内存。

2.栈内存存放的数据:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

  • 堆内存

1.堆内存的特点:动态分配内存大小,生存期不必事先告诉编译器;由JVM管理内存的释放和垃圾回收;由于在运行时动态分配内存,存取速度较慢。

2.堆内存存放的数据:jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。

学习笔记, Java
comments powered by Disqus