【Java基础】——浅谈堆栈内存
来源:互联网 发布:java实现qq第三方登录 编辑:程序博客网 时间:2024/06/08 14:15
关于内存这一部分的处理,在程序中是极为重要的,这不仅关乎程序运行的速度而且还会对程序能否正常运行,以及对支持程序运行的硬件设备也是同样有需求的。小编也是把自己最近接触到的写出来,如有错误之处,恳请大家斧正。
在程序的运行过程中,会把内存分割成很多部分,这篇文章主要讲解堆栈的问题。
何为栈?
运行时对象区,就是所有在方法中定义的变量,变量的存放区,则为栈内存。随着方法的结束,栈内存也会自然摧毁。
何为堆?
运行时数据区,就是所有在方法中创建对象时,这个对象存放的地方,则为堆内存。在堆内存的对象可以被反复利用,不会伴随方法的结束而销毁。
图中讲解的主要是定义变量和给变量赋值时关于内存分析的处理。
值传递和址传递
随带说一下值传递(值类型)和址传递(引用类型)结合内存分析一下。
值传递
public class Value{public static void main(String[] args){int a = 6;int b = 9;swap(a,b);System.out.println("交换之后 a的值是:" + a + ";b的值是:" + b);}public static void swap(int a,int b){int temp = a;a = b;b = temp;System.out.println("swap方法里 a的值是:" + a + ";b的值是:" + b);}}运行结果
内存分析
址传递
public class address{ public static void swap(DataWrap dw){int temp = dw.a;dw.a = dw.b;dw.b = temp;System.out.println("swap方法里 a的值是:" + dw.a + ";b的值是:" + dw.b);}public static void main(String[] args){DataWrap dw = new DataWrap();dw.a = 6;dw.b = 9;swap(dw);System.out.println("交换之后 a的值是:" + dw.a + ";b的值是:" + dw.b);}} class DataWrap{int a;int b;}
运行结果
内存分析
上边两个方法不同之处在于一个传的是值类型的,而另一个传递是引用类型,后者伴随方法的结束,其保存数据的栈也被销毁,指向堆区域的指针消失了。而前者的数据保存在当前方法的栈用,依旧存在。
【总结】
主要是何时会产生栈和堆内存,深入的内存还得慢慢学习啊。关于内存的回收,Java中垃圾回收机制,当对象不再被引用,建议把对象设为null,便于垃圾回收机制的识别,加快回收速度。
1 0
- 【Java基础】——浅谈堆栈内存
- 浅谈java内存堆栈
- java的堆栈内存解释—数组
- java的堆栈内存解释—数组
- java堆栈浅谈
- 浅谈java中的堆栈
- 浅谈C/C++堆栈指引——C/C++堆栈
- java内存堆栈
- Java 内存与堆栈
- java堆栈内存分配
- java堆栈内存详解
- JAVA堆栈内存机制
- Java内存堆栈分析
- Java中的内存堆栈
- java堆栈内存解释
- Java 堆栈内存分配
- java内存管理-堆栈内存
- [整理]程序内存堆栈知识浅谈
- 【JZOJ5073】【GDOI2017第三轮模拟day1】影魔
- java JDBC超出索引 或者没有发现哪张表
- Maven新手使用遇到的问题及解决办法
- 【java】走迷宫最短路径
- 心灵小语
- 【Java基础】——浅谈堆栈内存
- apk的更新和下载安装
- 鼠标悬停商品图片,图片放大,并且可拖动
- ubuntu apache下设置隐藏index.php
- linux 串口通信-配置与实例
- EJB解释
- ACMA
- 阿里云服务器上搭建Discuz论坛
- 二分的技巧