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

java内存管理的分析

时间:2014-06-01 15:09:19      阅读:348      评论:0      收藏:0      [点我收藏+]

标签:java   内存   heap   stack   constant pool   

java 中的内存分为四个部分:

stack(栈):存放基本类型的数据和对象的引用,即存放局部变量。

Note:

如果存放的是基本类型数据(非静态变量)则直接将变量名和值存入stack中。

如果存放的是引用类型,则将变量名存入栈,然后指向它new出的对象(存放在堆中)。

heap(堆)存放 new 出来的东西。

data segment(数据区):分为静态区和常量区(常量池)

静态区(static segment):

存放在对象中用 static 定义的静态成员(即静态变量,如果该静态变量是基本类型变量,则将变量名和值都存入静态区中,如果是引用类型则指向 new 出来的对象。

常量池(constant pool):

存放在编译期被确定,并被保存在已编译的 .class 文件中的一些数据。如代码中基本类型和引用类型(String、Class、数组、Integer等包装类)的常量值(final)。此外,这里还存放一些以文本形式出现的符号引用(如:字段的名称和描述符、方法的名称和描述符、类和接口的全限定名)。

code segment(代码区):存放代码。

【图示】

1:注意比较静态变量和非静态变量的变量名、变量值所存储位置的区别:

bubuko.com,布布扣


2:对于值相同的 String 常量,在 constant pool 中只会创建一个。

   对于 String s3 = new String("s3");

   创建了两个 String 对象,一个是在编译期间通过""双引号创建的,另一个是在运行期间 new 出来的。

3:bubuko.com,布布扣

   bubuko.com,布布扣




java内存管理的分析,布布扣,bubuko.com

java内存管理的分析

标签:java   内存   heap   stack   constant pool   

原文地址:http://blog.csdn.net/a__17/article/details/27855523

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