大猩猩出山!非火必红!
以上便是文章,以下则为后感。
这文章讲的是java内存,什么堆啊栈啊常量池,像我这种不怎么上心记东西的人的确也不太分的清。先了解概念!
堆(heap): 用来存放由new创建的对象和数组
1)存是存了,总不能一直存着吧,所以java虚拟机负责来自动回收堆内存产生的垃圾
2)堆中的数组或者对象,都可以在栈中找到他的另一半(一个特殊的变量),栈中这个变量的取值等于数组或者对象在堆内存的首地址,栈中的一个变量就成了数组或者对象的引用变量了(就这么勾搭上了。)
stack(栈): 存放基本数据类型and对象或者数组的引用
1)如果存放的是基本类型(But ! 不能是静态变量), 则直接把变量名和值存入stack中的内存。
2)如果是引用类型或者数组, 那就把变量名存入栈, 然后把它指向它new出的对象(存放在堆中)。
3)??或说静态变量怎么好像被遗忘了!先马后解决! // 好像是放在静态域?
data segment: 分为静态域和常量域。
1) 静态域:存放对象中用static定义的静态成员
2)常量池:在编译期被确定,并保存在已编译的.class文件中的一些数据。除了包含代码中所定义的基本类型(int, long)和对象型(String以及数组的常量值(final), 还包含一些以文本形式出现的符号引用。比如类和接口的全限定名;字段的名称和描述符;
还有几个例子。 - - 有点懒,明天看。今天 先搞懂概念