Java中的成员变量的引用存放在栈的啥位置
栈的结构可以使用HSDB查看来解决疑惑:1.先用jps来查看当前运行中的java线程id(这里的java程序是运行在mixed mode下),然后输入:sudo java -cp .:$JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.HSDB打开HSDB,然后输入想要查看的java线程id进行attach,会显示如下页面:
选中main然后点击红圈标示的那个按钮,就会打开下边这个窗口:
【Java中的成员变量的引用存放在栈的啥位置】
上图是运行在解释模式下的栈结构。贴一下main函数的代码:public static void main(String args) { String s = "a"; String s2 = new String(s); String s3 = new String("a"); System.out.println(s2.equals(s3)); }可以看到最下面4个位于新生代的对象从下往上就是args、s、s2、s3的引用(具体对应关系可以用javap -v中查看),再往上就是一些HotSpot内部对象,比如用来表示方法的Method对象、常量池缓存、bytecode ptr、锁记录之类(如果有锁的话)的,最上面就是操作数栈。
推荐阅读
- 鄂温克冬季马赛-30℃极寒开赛:寒冬中的火热派对
- 大雪@大雪腌肉 适当进补 今日大雪
- |电商事业中的“闪光少年”
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- hadoop中的mapreduce链接(mapreduce chaining)怎样避免中间文件的产生
- 经观汽车|日系车企中的“异类”?东风日产将导入e-POWER技术大干增程式混动 | 经观汽车
- 中年|这些东西,比你想象中的还要大得多!
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 请问杨毅微博中的这两人是谁
- 某些公司招聘要求中的精通mysql是啥程度
