JVM内存模型

作者: 齐晋 | 来源:发表于2017-04-13 11:54 被阅读123次

内存模型

五大区域

  1. 程序计数器(PC)
  2. 虚拟机栈
  3. 本地方法栈
  4. 方法区(包含常量池)


详细介绍

1. 程序计数器

程序计数器 ,简称PC(Program Counter Register)

内容

  • 存储要运行的字节码地址

特点

  • 线程私有,每个线程都有一个PC
  • 当执行一个方法时,PC中存储的是要执行的字节码地址
  • 当执行一个本地方法时,PC为空

异常

  • 唯一一个不会发送OutOfMemory的区域

2. 虚拟机栈

Java Virtual Machine Stacks

内容

  • 局部变量
  • 函数调用返回地址

特点

  • 线程私有
  • 声明周期与线程相同

异常

  • StackOverflow: 栈深度过大
  • OutOfMemory: 内存溢出

3. 本地方法栈

Native Method Stack
Native Method是指由非Java编写的代码

内容

  • Native方法的变量

特点

  • 有些虚拟机将本地方法栈与虚拟机栈合二为一(如HotSpot)

异常

  • StackOverflow: 栈深度过大
  • OutOfMemory: 内存溢出

4. 方法区

Method Area

内容

  • 类信息
  • 常量、静态变量
  • 编译后的代码

特点

异常

  • OutOfMemory: 内存溢出

5. 堆

Heap

内容

  • new出来的对象

特点

  • JVM管理的最大一块内存,也是GC主战场
    分为新生代和老年代

异常

  • OutOfMemory: 内存溢出
    ·

OOM (OutOfMemory)

Stack Overflow

一个Stack Overflow例子

public class Main {

    private int size = 1;

    public void stackLeak(){
        size++;
        stackLeak();
    }
    public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
        Main gg = new Main();
        try{
            gg.stackLeak();
        }catch(Throwable e){
            System.out.println(gg.size);
            throw e;
            //e.printStackTrace();
        }

    }
}

参考

相关文章

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • JVM

    栈容量由-Xss指定深入理解JVM—JVM内存模型 JVM内存模型和JVM参数的关系

  • [Java多线程编程之八] Java内存模型

    一、Java内存模型 == JVM内存模型?   很多人都会认为Java内存模型就是JVM内存模型,但实际上是错的...

  • JVM问题及解答

    常见JVM问题 JVM内存模型,GC机制和原理。注意JVM内存模型与Java内存模型(JMM)不是同一个东西。JV...

  • JVM内存结构和Java内存模型

    最近看到两个比较容易混淆的概念:JVM内存结构和Java内存模型 JVM内存结构JVM内存结构或者说内存模型指的是...

  • 高效并发

    从JVM的角度看一下Java与线程,内存模型,线程安全以及JVM对于锁的优化 硬件内存模型与JVM内存模型 硬件的...

  • jvm

    1.5.1JVM的内存模型 首先我们来了解一下JVM的内存模型的怎么样的: 基于jdk1.8画的JVM的内存模型-...

  • JVM基础知识点

    1. 内存模型以及分区,需要详细到每个区放什么(共分为5个)。 JVM内存模型及分区jvm内存模型和内存分配 程序...

  • 面试系列之JVM

    1.jvm内存模型 jvm内存模型主要有运行时期模型和非运行时期两部分组成,通常说的jvm内存模型是指运行时期内存...

  • jvm内存模型

    Java虚拟机内存模型 计划发布3篇博客, 这是第一篇:jvm内存模型 jvm内存模型 对象创建和内存分配 OOM...

网友评论

    本文标题:JVM内存模型

    本文链接:https://www.haomeiwen.com/subject/ntrbattx.html