堆、栈、方法区简述

先看以下图片:

堆、栈、方法区简述_第1张图片

含义及用法

通常我们定义一个基本数据类型的变量,一个对象的引用、方法调用的现场保存都使用内存中的栈空间;栈空间操作最快但是也很小。

而通过new关键字和构造器创建的对象放在堆空间;整个内存包括硬盘上的虚拟内存都可以被当成堆空间来使用。

静态区存储class字节码文件、静态变量。

堆与栈的区别

 
内存申请方式 程序员自己申请,申请时需要指明申请的大小 系统自己分配
系统响应方式 遍历内存空闲地址链表,找到比申请的要大的堆结点,将其

 

中申请的大小分配给程序,程序空间放入空闲链表中

栈的剩余空间不足时会overflow
最大空间大小 由系统中的有效虚拟内存决定 2M
执行效率 慢、易产生内存碎片、灵活 快、无内存碎片

 

参考:

http://blog.csdn.net/mishifangxiangdefeng/article/details/7200730

你可能感兴趣的:(java)