求教JDK1.8内存模型。。。。

看完JVM内存模型一章,大致对各个内存区的作用有了了解,但是细究起来又存在问题,例程代码如下:
public class MemoryDump {
/***********************成员数据******************/

/**
* 常量:普通常量、静态常量、引用常量
*/
final int a0 = 1;//?- 方法区(元空间)
final String b0 = "hello";//?- 堆常量池
final String c0 = new String("hello");//?- 堆区

static final int a1 = 1;//?- 方法区(元空间)
static final String b1 = "hello";//?- 堆常量池
static final String c1 = new String("hello");//?- 堆区

/**
* 变量:普通变量、静态变量、应用变量
*/
int a2 = 1;//?- ?
String b2 = "hello";//?- 堆常量池
String c3 = new String("hello");//?- 堆区

static int a4 = 1;//?- 方法区(元空间)
static String b5 = "hello";//?- 堆常量池
static String c6 = new String("hello");//?- 堆区

public static void main(String[] args){
/******************局部数据****************/
/**
* 常量:普通常量、引用常量
*/
final int a0 = 1;//?- ?
final String b0 = "hello";//?- 堆常量池
final String c0 = new String("hello");//?- 堆区

/**
* 变量:普通变量、引用变量
*/
int a2 = 1;//栈区 - 栈区
String b2 = "hello";//栈区 - 堆常量池
String c3 = new String("hello");//栈区 - 堆常量池

}
}

可见大部分实际数据存储位置还是知道的,但是实际数据所在的引用到底存放在哪呢?不知道上图写的有没有错误,坑请指正,同时希望有人解答一下?所值的位置,不胜感激。。。。
全部评论
请问您看的什么书。求推荐
点赞 回复 分享
发布于 2017-12-02 13:17
我去百度了下,final确实是不改变引用位置的,也不改变变量生命周期。String字面量特殊,不在考虑范围之内,jvm会对其优化的。至于final为什么能让引用不变,这个原理还不清楚,明天去搜,睡觉
点赞 回复 分享
发布于 2017-11-29 00:06
只有final没有static的变量并不是在方法区的吧?它就是一个普通变量加上不可修改的属性
点赞 回复 分享
发布于 2017-11-28 10:39
小弟不才,个人认为你注释都是正确的。 小弟说的不一定对,仅供参考,见谅。 1,类变量的对象引用是存放在堆用的方法区,就是存放类(Class对象)的地方,jdk8之后就把这块内存合并到堆中了 2,成员变量的对象引用存放在堆中,因为成员变量是属于实例对象的,所以存放在堆中理所应当 3,局部变量中的对象引用存放在当前活动栈中 4,集合类,数组中对象的引用也是存放在堆中的 这些引用在传递引用时会在各个内存区域复制 基本类型没有引用,final并不决定引用的存放位置 把垃圾收集的可达性分析忘的差不多了,不敢在此推论,怕说错了
点赞 回复 分享
发布于 2017-11-28 00:00
普通变量应该是存放在对应的栈区, 局部常量用得少吧?? 一般内部类啥的可能会用到吧 不是很了解,我觉得也应该在常量池里
点赞 回复 分享
发布于 2017-11-27 23:51

相关推荐

不愿透露姓名的神秘牛友
07-10 11:33
点赞 评论 收藏
分享
06-25 16:25
梧州学院 Java
愿汐_:项目介绍那么长,然而你做了啥就一句话?
点赞 评论 收藏
分享
来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务