Java
数据区 标签描述

一、老生常谈,JVM的组成部分有哪些 1.类加载器(作用:将字节码文件加载到内存中的运行时数据区) 2.运行时数据区(由多个部分组成,也是我们最为普遍较为的区域,大体上讲就是运行程序,包括了程序运行的全生命周期) 3.执行引擎(作用:将字节码翻译成底层系统命令交给CPU去执行) 4.本地库接口(作用:字节码翻译过程需要使用其他语言的接口接口,这个接口就是贝蒂库接口) 二、运行时数据区的组成部分(JDK1.8版本): 1.程序计数器(作用:记录每个线程的正在执行的字节码行号,线程私有) 2.java虚拟机栈(作用:存放局部变量、方法调用,每个线程运行时需要的内存,由栈帧组成,栈帧弹出,内存释...

包含堆、方法区、程序计数器、本地方法栈、虚拟机栈。这就是运行数据区的几个部分。其中堆和方法区是线程共有的,其它数据区域是线程私有的。 堆中存储对象数据。 方法区中储存类信息、常量及静态变量等信息。 方法栈中的栈帧和线程的寿命是一致的,储存方法执行时的相关常量,比如局部变量、方法出口这些。本地方法栈是本地方法相关,例如c编写的内部方法。而虚拟机栈则是java方法相关。 程序计数器保存下一条需要执行的字节码命令。 OOM就是内存溢出,发生的数据区域,除了程序计数器,都可以发生。