码迷,mamicode.com
首页 > 编程语言 > 详细

Java内存区域和变量生命周期

时间:2014-12-17 22:27:51      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   使用   sp   java   数据   2014   log   

在一台电脑上的内存存储区域分为6种:

1.寄存器: 寄存器是运行最快的,寄存器在系统中早就已经存在了,寄存器的数量是有限的,被严格要求
            Java程序员不能显示的调用寄存器

2.栈:   栈中存储着基本数据类型的变量以及引用变量 栈中元素在超出其生命周期后会自动销毁
            栈中元素一经创建,系统会为其分配内存空间,在其内存空间里存取的值是真值(真实存放的值)
            栈中元素互不影响 每个在栈中的变量都有其自己对应的内存空间 里面存取着值
            在栈中存取的必须是确定了其存储大小和其生命周期。栈中不允许存放没有确定的变量 

bubuko.com,布布扣           
            
3.堆:   堆中存储着的是对象类型。类对象可以是字符串类型,数组类型,类类型。堆中存取的对象是
            运行时确定的,不必事先知道其数据大小与生命周期。在堆里有一个Java垃圾自动回收机制,
            针对的对象是那些失去了引用的对象类型。系统在发现没有变量能去引用这块内存时,就会认为这是
            一块废弃内存,在不久的不定时间内,会将其释放。

4.静态存储区域: 独立于栈和堆的存储区域,里面存储的数据类型是静态变量,可以随时通过类名来进行调用
                    静态变量一经初始化,就不会被初始化第2遍

5.常量存储区: 里面存放的final字段修饰的变量,一经创建就不能进行修改了,被存放在ROM中

6.磁盘:  我们平时使用的磁盘,用于数据存储的持久化,有点类似于手机设备上的sdcard


当我们写了一个String str = new String[]{" "};
相当于在栈内存里为引用变量分配了一个内存空间,该内存空间里存储的是在堆内存里分配的String类对象的地址
当我们调用该引用变量,相当于调用了该对象。

一个Class由2部分组成,数据域和方法

成员变量会自动被初始化,如果没有显示的去初始化
局部变量需要显示初始化,不然会出错

Java内存区域和变量生命周期

标签:blog   http   ar   使用   sp   java   数据   2014   log   

原文地址:http://www.cnblogs.com/xuyuzhang-2014/p/4170505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!