JVM真香系列:方法区、堆、栈之间到底有什么关系

回复“000”获取大量电子书

栈指向堆

如果在栈帧中有一个变量,类型为引用类型,比如:

package com.tian.my_code.test;

public class JvmCodeDemo {
 public  Object testGC(){
  int op1 = 10;
  int op2 = 3;
  Object obj = new Object();
  Object result=obj;
  return result;
 }
}

这时候就是典型的栈中元素obj指向堆中的Object对象,result的指向和obj的指向为同一个对象。

使用命令

javac -g:vars JvmCodeDemo.java

进行编译,然后再使用

javap -v JvmCodeDemo.class >log.txt

然后打开log.txt文件

如果还有疑惑,可以再结合上面的字节码图和关系图来看,这样理解就更轻松些。

方法区指向堆

方法区中会存放静态变量,常量等数据。

如果是下面这种情况,就是典型的方法区中元素指向堆中的对象。

堆指向方法区

方法区中会包含类的信息,对象保存再堆中,创建一个对象的前提是有对应的类信息,这个类信息就在方法区中。

Java对象内存布局

一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充

(0)

相关推荐

  • Java之GC机制

    Java之GC机制

  • JVM真香系列:堆内存详解

    回复"000"获取大量电子书 前面的文章中已经有所提到过堆,只是大致介绍了一下.本文就来详细聊聊JVM中的堆. 在 JVM中,堆被划分成两个不同的区域:新生代 ( Young ). ...

  • JVM真香系列:轻松掌握JVM运行时数据区

    回复"000"获取大量电子书 前面我们讲了从java源文件到class文件,在从class文件到JVM.那么今天继续聊JVM是如何布局的. JVM运行时数据区有几个?看看官网是就知 ...

  • JVM真香系列:图解垃圾回收器

    回复"000"获取大量电子书 不知不觉,JVM系列已经到回收算法的实现了. 本文主要内容 先普及三个概念: 并行收集:指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态. 并 ...

  • JVM真香系列:如何判断对象是否可被回收?

    回复"000"获取大量电子书 在JVM中程序寄存器.Java虚拟机栈.本地方法栈,这三个区是随着线程的创建而创建,随着线程结束而销毁. 其实就是这三个的生命周期和线程的生命周期一样 ...

  • JVM真香系列:轻松理解class文件到虚拟机(下)

    回复"000"获取大量电子书 类加载器 类加载器是很多人认为很硬的骨头.其实也没那么可怕,请听老田慢慢道来. 在装载(Load)阶段,通过类的全限定名获取其定义的二进制字节流,需要 ...

  • JVM真香系列:轻松理解class文件到虚拟机(上)

    回复"000"获取大量电子书 JVM初探 class文件到JVM中,就相当于我们吃饭,食物吃进了肚子里,不同的营养成分被身体不同的器官吸收. 查找class文件并导入到JVM中 ( ...

  • JVM真香系列:.java文件到.class文件

    回复"000"获取大量电子书 认识JVM 什么是JVM JVM 全称 Java Virtual Machine,也就是我们耳熟能详的 Java 虚拟机.它能识别 .class后缀的 ...

  • 真香系列之盗版的WPS?

    ‍‍ ‍‍逃离工地后明显觉得能写的素材少了. 我琢磨了下原因,发现是因为到格子间后,面对的就那几个固定的同事,故事有限:有趣程度也远比不上工地上的那些个吃喝嫖赌抽.吃拿卡要偷的主儿. 这就让我有点伤脑 ...

  • 10万元左右就能买!这款合资SUV实锤"真香"系列

    如何在有限的预算下,购买一辆称心如意的新座驾?成为当前年轻消费者普遍的难题.以10-15万级别的SUV为例,这里面既有主打高配置的国产SUV,也有主打品牌和品质的合资SUV,到底哪款车最值得年轻人入手 ...