java基础--java内存分析(二)(类和对象与内存分析)
2013-03-30 09:08
351 查看
java中除了基础类型外的变量类型,全部都是引用类型,与C和C++的指针类似。
在内存中区别类和对象:
类似静态的概念,首先放在在代码区,声明的局部变量放在堆栈中。
对象动态概念,放入堆内存。
为什么new出来的东西放到堆内存?
而对象是new出来的东西,是在代码执行的时候才存在的。堆内存是动态分配内存的,只有运行的过程中才会将new出来的对象放入堆内存中的,只有运行的过程中才会new一个对象放入到堆内存,没有办法开始就分配,必须在运行期分配。 而放在堆栈中的局部变量,不许要运行就放在堆栈中,使用局部变量完毕等待java的垃圾回收机制回收,不会立即消失。
堆内存像是你自己在家里做饭,做什么样子的饭可以自由搭配,自由度较大。而栈内存,相当于你去饭店吃饭,点菜(申请),吃饭付钱(使用),服务员(垃圾机制)收拾盘子,就是自由度较小。关于更多的堆内存:http://baike.baidu.com/view/1962829.htm
对于成员变量和方法:
同一个类的每个对象有不同的成员变量存储空间。
而同一个类的每一个方法共享该类的方法。
我们来看一个小例子:
我想如果换做你是内存分配的管理员,你也会这样分配内存的,符合生活规律~~~
在内存中区别类和对象:
类似静态的概念,首先放在在代码区,声明的局部变量放在堆栈中。
对象动态概念,放入堆内存。
为什么new出来的东西放到堆内存?
而对象是new出来的东西,是在代码执行的时候才存在的。堆内存是动态分配内存的,只有运行的过程中才会将new出来的对象放入堆内存中的,只有运行的过程中才会new一个对象放入到堆内存,没有办法开始就分配,必须在运行期分配。 而放在堆栈中的局部变量,不许要运行就放在堆栈中,使用局部变量完毕等待java的垃圾回收机制回收,不会立即消失。
堆内存像是你自己在家里做饭,做什么样子的饭可以自由搭配,自由度较大。而栈内存,相当于你去饭店吃饭,点菜(申请),吃饭付钱(使用),服务员(垃圾机制)收拾盘子,就是自由度较小。关于更多的堆内存:http://baike.baidu.com/view/1962829.htm
对于成员变量和方法:
同一个类的每个对象有不同的成员变量存储空间。
而同一个类的每一个方法共享该类的方法。
我们来看一个小例子:
我想如果换做你是内存分配的管理员,你也会这样分配内存的,符合生活规律~~~
相关文章推荐
- java基础1:对象创建内存分析
- Java基础6:类和对象及其内存分析
- Java学习笔记-类与对象(对象内存分析)
- 【Java之内存分析和String对象、包装类】Java之内存分析和String对象、包装类
- JAVA基础积累(程序运行时对象是怎么放置安排,内存是如何分配?)
- Java并发基础-Condition对象分析
- JAVA_SE基础——24.面向对象的内存分析
- JAVA_SE基础——24.面向对象的内存分析
- 黑马程序员--Java基础学习笔记之抽象类和接口、内存结构分析、Java APIs
- 【java基础 7】java内存区域分析及常见异常
- java语言基础(25)——面向对象(new对象的时候内存中发生了哪些变化)
- 梳理java内存的一点基础分析。
- 第十三、Java面向对象之内存分析
- Java之内存分析和String对象
- Java基础之jdk1.8 JVM内存模型简述,含String常量池简单分析
- 6 Java基础语法(二维数组,参数传递与数据加密问题)&面向对象(面向对象思想,类与对象及使用,对象内存图解)
- Java之内存分析和String对象
- Java对象内存布局 - 小分析
- Java内存对象的逃逸分析
- java基础-----------对象与内存控制