首页 技术 正文
技术 2022年11月9日
0 收藏 500 点赞 3,865 浏览 882 个字

Java虚拟机运行时数据区

线程私有

程序计数器

  • 1、当前线程所执行的字节码的行号指示器。
  • 2、唯一不会发生OutOfMemoryError的区域
  • 3、如果执行的是java方法,计数器值为虚拟机字节码指令地址;如果执行native方法,值为空。
  • 4、java多线程中一个时刻,一个处理器都只会执行一条线程中的指令,在线程轮流切换的过程中,每个线程都有自己的程序计数器,互不影响,以便线程切换恢复到正确的执行位置。

Java虚拟机栈

  • 1、生命周期同线程相同

  • 2、描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至完成的过程,就对应着一个栈帧在虚拟机中从入栈到出栈的过程。

  • 3、局部变量表存放编译期可知的基本数据类型(boolean、int、byte、short、double、long、float、char),对象引用(指向对象起始地址的指针或者是代表对象的句柄),returnAdress(指向字节码指令地址)

  • 4、两种异常

    • 1、StackOverflowError(线程请求的栈深度大于虚拟机允许的深度)
    • 2、OutOfMemoryError(虚拟机栈动态扩展时无法申请到足够的内存)

本地方法栈

  • 和虚拟机栈相似,区别为虚拟机栈为虚拟机执行Java代码服务,本地方法栈为虚拟机使用Native方法服务。

线程共享

Java堆

  • 1、虚拟机管理最大的一块内存
  • 2、虚拟机启动时创建
  • 3、唯一目的:存放对象实例,几乎所有对象实例和数组都在这里分配
  • 4、垃圾收集器管理主要区域(GC堆)
  • 5、可以细分为新生代、老生代
  • 6、可以通过-Xmx 和 -Xms 控制
  • 7、堆中没有内存完成实例分配,且堆也无法再扩展时,就会OutOfMemoryError

方法区

  • 1、目的:存放已被虚拟机加载的类信息、常量、静态变量等
  • 2、永久代
  • 3、HotSpot虚拟机才有的划分,方便垃圾收集器管理这部分内存
  • 4、这个区域还包含运行时常量池存放字面量,符号应用
  • 5、无法再申请内存时,就会OutOfMemoryError

XMind – Trial Version

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,501
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,915
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,748
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,505
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,143
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,306