• 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. Elasticsearch: 权威指南 » 深入搜索 » 多字段搜索 » 多数字段 good

      跨字段实体搜索  » 多数字段编辑 全文搜索被称作是 召回率(Recall) 与 精确率(Precision) 的战场: 召回率 ——返回所有的相关文档:精确率 ——不返回无关文档.目的是在结果的 ...

  2. XSS(笔记1)

    概念 跨站脚本(Cross-Site Scripting,XSS) 发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就会发生.为 ...

  3. thinter中combobox下拉选择控件(九)

    combobox控件,下拉菜单控件 combobox控件在tkinter中的ttk下 简单的实现下: import tkinter from tkinter import ttk # 导入ttk模块, ...

  4. 读书笔记---HTML5实战 MARCO CASARIO(后六章)

    画布叠加:用CSS的z-index和position; 第八章 HTML5通信API ①XMLHTTPREQUEST是JS中用于服务器交互的API; ②用HTML5的POSTMESSAGE API实现 ...

  5. python反编译工具

    开发类在线工具:https://tool.lu/一个反编译网站:https://tool.lu/pyc/ 一看这个标题,就是搞坏事用的, 用 java 写程序多了,很习惯用反编译工具了,而且玩java ...

  6. switch窗口句柄

    Set<String> windows = browser.getWebDriver().getWindowHandles(); //获得所有窗口句柄 for (String string ...

  7. Kafka的CommitFailedException异常

    一.含义 CommitFailedException异常:位移提交失败时候抛出的异常.通常该异常被抛出时还会携带这样的一段话: Commit cannot be completed since the ...

  8. Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方

    转自https://www.cnblogs.com/qiumingcheng/p/7126281.html 先说明一下好处有哪些:1,如果你想 new 一个空的 List ,而这个 List 以后也不 ...

  9. hibernate MTM 联合主键

    //适用于表里没有其他列,只有主键 //Course.java实体类 package com.tao.pojo; import java.util.HashSet; import java.util. ...

  10. 从壹开始 [ Id4 ] 之一║ 授权服务器 IdentityServer4 开篇讲&计划书

    前言 哈喽大家周四好!时间过的很快,现在已经是三月份了,我的 IdentityServer4 教程也拖了一定的时间了,正好最近有精力学新东西了,主要中间被小伙伴要求写一个管理后台,目前1.0已经上线( ...