Java---堆栈的理解

原创 2015年11月20日 15:55:42

堆栈的理解

 在JAVA中,把内存分为两种----1.堆内存;2.栈内存
***栈空间是由系统自动分配和释放的;
***堆空间是是手动申请和释放的。
优势:栈比堆存取速度快,数据可共享
注意: 栈是来存放对象引用,而堆是存放JAVA对象数据的
**栈中变量指向堆中变量-----可以理解为JAVA的指针
----在我们声明基本数据类型和对象的引用变量的时候,就会由栈内存进行分配。当在一段代码快中定义一个变量,Java就在栈中为其分配内存空间,若该变量退出作用域后,JAVA会自动释放该变量占有内存,另作他用。
**例如在我们定义一个变量 Object obj = null;这时就会由栈内存为其分配内存空间。
----当我们在new产生一个新的对象时,就是在堆内存中来为其分配内存空间,里面保存的就是对象的信息内容。
栈中主要存放一些基本类型的变量数据(int short long byte double float double boolean char)

特别注意!!!:常量是保存在常量池中的
String类型的数据是常量(String类是final类,不可被继承),还有被static final修饰了的基本类型数据是常量。
eg:int a =1 ----这个1在这里并不是常量,它是被分配在了栈中的,并且放在了一个指令指针上;当再次定义一个int b=1时,如果有相同的值1,那么这个b会直接指向这个值为1的指针,这样它们共享了数据,但它们之间任何一个改变了都不会影响到其他值。
不要把栈中保存的值和常量池中保存的值混淆了。
String常量对象是保存在常量池的,或被static final修饰的变量才算常量。
版权声明:本文为博主原创文章,未经博主允许不得转载。

深入理解Java的栈与堆栈

我想这篇足以让大家很清晰理解Java的栈和堆栈的区别。下面的是我收集了好多网友的资料加以整理的。 Java 中的堆和栈  Java把内存划分成两种:一种是栈内存,一种是堆内存。  1.栈...

深入理解Java的栈与堆栈

我想这篇足以让大家很清晰理解Java的栈和堆栈的区别。下面的是我收集了好多网友的资料加以整理的。 Java 中的堆和栈  Java把内存划分成两种:一种是栈内存,一种是堆内存。  1.栈(sta...
  • im_xiao
  • im_xiao
  • 2016年09月01日 20:58
  • 4380

Java中堆栈内存的理解

一。栈、堆 几个小概念 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的...

深入理解Java的栈与堆栈

摘要: 我想这篇足以让大家很清晰理解Java的栈和堆栈的区别。下面的是我收集了好多网友的资料加以整理的。 Java 中的堆和栈 Java把内存划分成两种:一种是栈内存,一种是堆内存。 ​ 我...

java程序中对堆栈的理解

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内...

Java堆栈的关系理解

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

关于Java堆栈的理解与说明

在谈堆和栈之前,首先我们先要了解一下Java对内存的分配结构。作为Java程序员大家应该都知道Java的程序都是运行在Java虚拟机上也就是JVM上,程序中所有的变量、实例、方法等都是由JVM在内存上...

Java中堆栈理解(有关基本数据和引用数据)

栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 栈内存 堆内存 ...

如何理解java堆栈

Java把内存划分成2种,一种是堆内存,一种是栈堆存。 堆栈是逻辑概念上的。...

深入理解Java的栈与堆栈

转自http://blog.csdn.net/im_xiao/article/details/52403337 Java 中的堆和栈  Java把内存划分成两种:一种是栈内存,一种是堆内存。  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java---堆栈的理解
举报原因:
原因补充:

(最多只允许输入30个字)