IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 深入了解Java(3)Java内存区域与内存溢出异常 -> 正文阅读

[Java知识库]深入了解Java(3)Java内存区域与内存溢出异常

java 与C++都有内存动态分配和垃圾回收机制,不同的是C++需要开发者手动管理内存,Java可以使用spring框架交由框架管理内存
两者相比的话各有各的特点,java开发者不需要管理内存但是一旦发生内存溢出异常无法准确排查,c++开发者需要管理内存开发比较费事但是发生内存溢出很容易发现与解决

运行时数据区域

在这里插入图片描述

程序计数器
他是一个较小的内存空间,作用是当前线程所执行的字节码的行号指示器, 在项目运行时Java代码编译成字节码,调用方法时改变程序计数器的值来执行下一条字节码指令,直到执行结束,相对于多线程的话每一个线程都有一个独立的程序计数器属于线程私有。例如正在执行一个方法如果程序计数器的值为空,就会发生OutOfMemoryError异常
Java虚拟机栈
他和程序计数器有些相似,都是线程私有,工作原理每个方法在执行的同时会创建一个栈帧用来储存局部变量,操作帧数,动态链接,方法出口等信息,每个方法从调用到执行完成都对应着一个栈帧在虚拟机中入栈到出栈的过程。例如如果线程请求的栈深度大于虚拟机所允许的深度抛出StackOverflowError异常 如果无法申请到足够的内存抛出OutOfMemoryError异常
本地方法栈
他和虚拟机栈作用都是相似的,虚拟机栈执行Java方法,本地方法栈为虚拟机使用到的本地方法服务,本地方法栈会抛出StackOverflowError和OutOfMemoryError
Java堆
他是Java虚拟机最大的一块内存,内存的数据是线程共享的,几乎所有创建对象实例和一些数组集合数据都在这,JAVA堆是垃圾回收器管理的主要区域,从内存回收角度来看,收集器都采用分代收集算法,细分为新生代和老年代,讲的有点远,等到时候具体说说垃圾收集器,理论上Java推可以动态扩充,如果无法扩充时抛出OutOfMemoryError
方法区
他是线程共享的主要储存类信息,常量,静态变量,编译后的代码数据,很多人说他是永久代不会受到垃圾回收机制的管理,如果方法去无法满足内存分配需求时OutOfMemoryError
运行时常量池
运行时常量池是方法区的一部分,用于存放编译期生成的各种字面量和符号引用,只有编译才能产生,如果方法区收到限制,当前常量池没有办法申请内存抛出OutOfMemoryError
直接内存
他不是虚拟机运行时数据区的一部分,没有在虚拟机定义内存范围内,但是频繁使用的话可能会抛出OutOfMemoryError,用于存放nio(new input/output)类的数据用于提高性能,避免在Java堆重复复制数据,项目配置虚拟机参数时需要注意不要大于服务器实际物理内存如果无法动态扩展时抛出OutOfMemoryError

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:10:49  更:2021-11-29 16:11:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:24:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码