Java的内存分配上,主要分4个块!
一块是用来装代码的,就是编译的东西。
一块是用来装李山腔静态唯型变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆!堆可以一句话概括,装new出来的东西!
所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西!
这样说希望能帮你了解到java的内存分配问题哪衫。
Java的内存分配上,主要分4个块,
一块是用来装代码的,就是编译的东西。
一块是用来装李山腔静态唯型变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的,但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆,堆可以一句话概括,装new出来的东西,
所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西,
这样说希望能帮你了解到java的内存分配问题哪衫。
内存从大的方面可分为栈和堆。
java中的定义数笑姿据类型是告诉内存需要分配多少空间给某个变量使用。
java中的8种基本类型是在栈内存中开空间,其声明的基本类型变量的生命周期同变量规定的生命周期[离此定义的变量最近的大括号所对应的另一大括号之间的生命周期范围,过乱升派了范围则无效]。
java中的引用类型则分为两部分:
如Student nihility = new Student();
nihility-->为指向Student类型的句柄[这是我们特有的叫法],此句柄是定义在栈内存中,同基本类型
句柄存储的内容实质为内存地址[new 开空间返回的地址]
new -->真正的在内存中开空间[存此对象的属性值],是在堆内存中,返回内存地址,即句柄
若感觉难哗贺理解的话,给你说个生活例子吧:
栈内存的句柄就像是电视机的遥控器,而存到堆内存中的对象则是电视机,遥控器来操控电视机,就像通过句柄来操作对象的内容。所以在Java中随处可见,通过句柄来操作某对象的语法。
其实其中还有蛮多的内容需要我们慢慢体会的。。。
希望能帮到你。。。
这个问题复杂了,
基本数据类型都是存放在栈中。
引用数据类型基本上就是数据存放在堆中,在栈中运郑扮存放一个一个引用,丛败或者一个首地址。
你得找本关于java虚拟机的书才能看个大概。我感觉自己旁灶没有讲明白的。
基本数据类型都是慧明存放在栈中。
引用数据类型一般存放在堆中,在栈中存放对其的引用,但有些优化局祥也有可能一些对前腊告象放在栈上。