Java虚拟机概述

运行时数据区,执行引擎,本地方法库,本地库接口

  • 执行引擎:解释代码
  • 本地方法库:系统底层方法库(C语言)

Java虚拟机运行时数据区

虚拟机栈,本地方法栈,程序计数器,方法区,堆。

  1. 虚拟机栈:
    存放引用,基本数据类型,方法局部变量

  2. 本地方法栈:
    存放在java中本地方法的声明
    通过JNI(Java Native Interface)技术调用

  3. 程序计数器:
    行号指示器,正在执行的虚拟机指令的地址。
    JVM中唯一没有OOM的区域

  4. 堆:
    对象实例
    ps:栈上分配,标量替换技术使有些小对象在栈不在堆
    新生代(Eden+2Survivor),老年代

  5. 方法区:
    类信息,常量,静态变量,编译后代码

People p = new People(); 在堆上还是栈上分配?

People p = new People();

分为三步:

  1. People p; p为一个变量 -> 在栈上分配内存
  2. new People(); 在堆上生成对象
  3. p = new People 栈上变量p指向堆上People对象地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容