• java虚拟机运行时数据
  1. 程序计数器
    1. 是一块较小的内存空间,属于线程私有的内存。
    2. 用来记录正在执行的虚拟机字节码指令的地址。
    3. 每个线程都需要一个独立的程序计数器,各个线程间的计数器互不影响,独立存储。
    4. 多线程:通过线程轮流切换并分配处理器执行时间的方法来实现的 。
  2. Java虚拟机栈
    1. 属于线程私有,与线程的生命周期相同。
    2. 内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量、操作数栈、动态链接、方法接口等。
    3. 本区域存在两种异常:线程请求的栈深度大于虚拟机所允许的深度,抛出StackOverflowError异常;申请不到足够的内存,抛出OutOfMenoryError异常。
  3. 本地方法栈:与虚拟机栈的作用很相似;区别:虚拟机执行方法时,本地方法栈为虚拟机使用的是Native方法服务。同样的两种异常方法:线程请求的栈深度大于虚拟机所允许的深度,抛出StackOverflowError异常;申请不到足够的内存,抛出OutOfMenoryError异常。
  4. JAVA堆
    1. 所有的对象实例以及数组都要在堆上分配。
    2. java虚拟机中管理的最大的一块内存。
    3. 被所有线程共享的一块内存区域,在虚拟机启动时创建。
    4. java堆是垃圾收集器管理的主要区域,因此也成:‘GC堆’
      1. 细分:老生代和新生代;
    5. java虚拟机可以在物理上不连续的内存空间,只要逻辑上是连续即可。
    6. 抛出异常:堆中没有内存完成实例分配,抛出OutOFMenoryError
  5. 方法区
    1. 各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
    2. java虚拟机规范对方法区的限制非常宽松,除了和java堆一样不需要连续的内存空间和可以选择固定大小或者可扩展外 ,还可以选择不实现垃圾收集。
    3. 当方法区无法满足内存分配需求时,抛出:OutOFMenoryError异常。
  6. 运行时常量池
    1. 属于方法区的一部分
    2. 存放:编译期生成的各种字面量(初始化的常量值)和符号引用。
    3. 具备动态性。
    4. 当常量池无法满足内存分配需求时,抛出:OutOFMenoryError异常。
  7. 直接内存
    1. 并不是虚拟机运行时数据区的一部分,也不是java虚拟机中规范定义的内存区域,但是被频繁使用。
    2. 抛出异常:OutOFMenoryError

java虚拟机内存区域的更多相关文章

  1. 重读《深入理解Java虚拟机》一、Java虚拟机内存区域的划分

    一.Java虚拟机内存区域如何划分 1.Java虚拟机内存区域的划分 区域名称 作用(用途) 类型 特点 虚拟机规定异常情况 内存分配与回收 其他说明 1 程序计数器 指示当前正在执行的字节码指令地址 ...

  2. 总结Java虚拟机内存区域模型

    本篇文章主要来总结一下Java虚拟机内存的各个区域,以及这些区域的作用.服务对象以及其中可能产生的问题,作为大家的面试宝典. 首先我们来看一下Java运行时的数据区域,Java虚拟机在执行Java程序 ...

  3. 一文解析总结Java虚拟机内存区域模型

    最近抽空看了一点<深入理解Java虚拟机>,本篇文章主要来总结一下Java虚拟机内存的各个区域,以及这些区域的作用.服务对象以及其中可能产生的问题,作为大家的面试宝典. 首先我们来看一下J ...

  4. java虚拟机内存区域理解

    java虚拟机有的区域随着虚拟机进程的启动而存在, 有的区域依赖用户线程的启动和结束而建立和销毁. 程序计数器:为了线程切换后能恢复到正确的执行位置,每个线程都有一个独立的程序计数器.(针对java方 ...

  5. java虚拟机内存区域的划分以及作用详解

    序言 为什么有时候学着学着会突然之间觉得一切度是那么无趣,男的每个月也有那么几天难道?哈哈,不然是什么,我还是要坚持,可以做少一点,但是不能什么度不做.总会过去的,加油 --WH 一.运行时数据区 什 ...

  6. Java虚拟机内存区域堆(heap)的管理

    在上一节中Java 出现内存溢出的定位以及解决方案 中对于Java虚拟机栈以及方法区的内存出现的异常以及处理方式进行了解析,由于Java虚拟机对于堆的管理十分复杂,并且Java虚拟机中最基本的内存区域 ...

  7. 【四】Java虚拟机内存区域初识

     一.线程独占区  1.程序计数器 程序计数器是一块处于线程独占区较小的内存空间,它可以看是当前线程所执行的字节码的行号指示器. 如果线程执行的是Java方法,这个计数器记录的是正在执行的虚拟机字节码 ...

  8. 一、java虚拟机内存区域

    内存区域 java虚拟机在java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.java虚拟机规范将JVM管理的内存分为:程序计数器.本地方法栈.Java虚拟机栈.方法区.Java堆.如下 ...

  9. Java虚拟机内存区域划分

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途.以及创建和销毁的时间.有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结 ...

随机推荐

  1. Access Logging Tomcat

    73.6 Configure Access Logging server.tomcat.accesslog.buffered=true # Buffer output such that it is ...

  2. 用户体验很好的密码校验js

    <div class="form-group" data-reactid=".0.1.1.0.1.1.3.0.1.1"><label for= ...

  3. Enabling Chrome Developer Tools inside Postman

    Chrome's Developer Tools are an indispensable part of the modern web development workflow. However, ...

  4. css布局-双飞翼布局

    <div class="header">Header</div> <div class="bd"> <div clas ...

  5. JDBC连接MySQL数据库基础

    主要内容 MySQL的基本操作和基本SQL语法 使用JDBC进行MySQL数据库的开发 使用DriverManager.Connection.PreparedStatement.ResultSet对数 ...

  6. kcp-go源码解析

    概念 ARQ:自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层的错误纠正协议之一.RTO:Retransmission TimeOutFEC:Forwa ...

  7. 二逼平衡树 Tyvj 1730 BZOJ3196 Loj#106

    树状数组+主席树,模板题,不多说... #include <cstdio> #include <algorithm> #include <cmath> #inclu ...

  8. ll 和 ls -l的详解

    ll会列出该文件下的所有文件信息,包括隐藏文件 而ls -l 只会列出显示文件 ll 命令列出的信息更加详细,有时间,是否可读写等信息 ll命令和ls -l命令结果区别: 上面结果说明: 各个字段的含 ...

  9. 操作系统--进程管理(Processing management)

    一.进程的组成 进程通常由程序.数据和进程控制块(Process Control Block,PCB)组成. 二. 进程的状态以及状态切换 进程执行时的间断性决定了进程可能具有多种状态,最基本的三种状 ...

  10. eShopOnContainers 知多少[5]:EventBus With RabbitMQ

    1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉.事件总线是对发布-订阅模式的一种实现.它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需 ...