内存分配

来源:互联网 发布:redis 数据库 0 到15 编辑:程序博客网 时间:2024/05/17 06:43


在学习的过程中,我觉得自己对内存分配的知识可以说是由一知半解到逐渐明白,只有深入了解了内存的分配原理,才能更好的编写出健壮高效的程序。

接下来我就分析一下栈内存和堆内存的分配问题,通过举两个小例子来分析这个问题。

1、栈内存分配:
假如一个类test,有个main方法,main方法里有个整型变量x;test类里还有一个show方法,show方法里也有个整型变量x。虽然这两个方法里的变量类型名字都一样,但他们却不是同一个变量,两者之间没有关系。在各自的方法里使用过之后,这样的局部变量都会自动释放所占用的内存区。

2、堆内存分配:

对于int[] arr=new int[3]这句代码的内存分配方法,是这样的。在栈内存里,会有一个名为arr的变量;在堆里,会分配3块连续的内存空间,这3块内存空间都有各自的地址值,现在会把第一块内存空间的地址作为首地址,赋值给arr,这样arr就会指向堆内存里的这3块内存空间,这就是引用类型的内存分配。假如现在有另一个变量second,也指向了这3个内存空间,那么second对这3块内存空间的修改,也会影响到arr的使用。

原创粉丝点击