JVM实际内存结构(非逻辑)

目录

1、什么是JVM?

2、JVM的结构是什么样子呢?

(1)JVM总体上有三个主要部分:

3、JVM内存结构:

(1)JDK1.6JVM实际的内存结构(非逻辑上的)

(2)JDK1.8JVM实际内存结构(非逻辑上的)

4、容易混淆的概念:

(1)常量池:

(2)方法区中到底有哪些东西?

(3)逻辑概念和真正的实现:


1、什么是JVM?

(1)之前我们认识到的JVM是:JVM是java语言实现跨平台的根本所在

(2)换个角度来说:JVM是真正执行java代码的地方

注意:但是JVM只能读懂编译以后的java代码,也就是字节码文件

2、JVM的结构是什么样子呢?

(1)JVM总体上有三个主要部分:

执行引擎(解释器、即时编译器、垃圾回收)、本地方法接口(包含操作系统的API等)、运行时数据区(也叫JVM内存结构:最重要的部分,最重要的部分,最重要的部分!!!)

3、JVM内存结构:

(1)JDK1.6JVM实际的内存结构(非逻辑上的)

 

(2)JDK1.8JVM实际内存结构(非逻辑上的)

 

4、容易混淆的概念:

(1)常量池:

注意:
    网上的资料中出现的常量池有可能是指的“运行时常量池”,有可能指的“字符串常量池”。这些都不准确,最准确的概念是,常量池指的是class文件中的常量池
    (1)关于常量池被理解为“运行时常量池”:之所以网上会出现这样的概念,是因为当class文件被加载进内存并完成类加载以后,class文件中常量池中原本的符号引用将变为直接引用。经过这一变化以后,class文件中的常量池在方法区中才被称之为“运行时常量池“
    (2)关于常量池被理解为“字符串常量池”:自行体会......吧!!!(也不知道谁带的头)

(2)方法区中到底有哪些东西?

    关于这个问题,你在网上会看到很多说存了:元信息、方法、常量、常量池、即时编译器代码等
    我只能说一定要注意版本,基本所有人根本不说版本,一顿操作猛如虎,结果一看原来是细狗!!!

static修饰的变量JDK1.7开始已经存储于java_mirror末尾(可以理解为Class对象)也就是说存储在了堆中

(3)逻辑概念和真正的实现:

这个是最容易混淆的,尤其是JVM内存结构包含了:堆、栈、本地方法栈、程序计数器、方法区。 这只是逻辑上的概念!!!

很多网上的资料都是逻辑概念和真正实现还有jdk版本之间自由排列组合,一顿咔咔说

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值