Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  •  普罗旺斯
  • 负责帅就完事了
  • 写了1,495,102字

该文章投稿至Nemo社区   Java  板块 复制链接


关于JAVA中堆和栈

发布于 2016/01/16 00:22 4,312浏览 14回复 568

这两天在折腾处理服务器大访问量的处理,其中可能会涉及到堆和栈结构,这里稍稍做下记录。


Java 把内存划分成两种:一种是栈内存,另一种是堆内存。


当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。


堆内存用来存放由new创建的对象和数组。


在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。


在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。


引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。


简而言之,也就是说,栈中存放地址,堆中存放对象。


对于栈和堆,我个人的理解是:栈中存放的地址指向堆中存放的对象(这或许可以理解成JAVA的指针?)。


占用空间而言的话,必须是栈中存放的空间比较小。


点赞(0)
点了个评