JVM简单概述
一、内存模型&分区
Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区
在运行时数据区里,会根据用途进行划分为以下模块:
1、Java虚拟机栈
2、本地方法栈
3、Java堆
4、方法区
5、程序计数器

二、Java堆

简介:
1、定义:即堆内存(Heap),是垃圾收集器管理的主要区域,也称为GC堆。
2、作用:存放Java对象实例。
3、特点:在JVM内存中是最大的,是线程共享的区域。
4、抛出的异常:OutOfMemoryError异常,堆中没有足够的内存完成对象实例的分配、堆无法再扩展。
注: 1、从内存回收的角度分为:新生代和老年代; 2、从内存分配的角度相当于:多个线程私有的分配缓冲区。
三、Java虚拟机栈

简介:
1、定义:栈内存(Stack),是Stack、java方法执行的内存模型。
2、作用:存储java方法执行时的局部变量。
注:以帧栈的形式,含数据型、对象的应用,方法执行结束后释放。
3、特点:线程私有、生命周期与线程相同。
4、抛出的异常:OutOfMemoryError异常(虚拟机栈扩展时无法申请到内存空间)、StackOverflowError异常(线程请求栈深度>虚拟机所允许深度)。
注: 1、每个java方法执行时都会创建一个栈帧; 2、一个java方法从被调用到执行完成等于一个栈帧在虚拟机栈中的入栈到出栈; 3、局部变量表所需内存空间在方法编译时就会完成分配,在方法运行时不会改变大小。
四、本地方法栈

简介: 十分类似java虚拟机栈,与java虚拟机栈区别在于:服务对象。java虚拟机栈为执行java方法服务,而本地方法栈为执行native方法服务。
五、方法区

简介: 1、定义:堆的一个逻辑部分,为了与java堆区分,又称“非堆”区域(Non-Heap)。
2、作用:存储已被虚拟机加载的类信息、常量、静态变量等数据。
3、特点:线程共享。
4、抛出的异常:OutOfMemoryError异常(当方法区无法满足内存分配需求时抛出)。
注:该区域的内存回收主要针对运行时常量池和对类的卸载,又称:永久代,回收条件苛刻,很少出现垃圾收集。
运行时常量池
定义:方法区的一部分。
作用:存放类文件在编译时生成的各种字面量、符号引用。
特点:动态性,即运行时也可添加新的常量,如String类的intern()。
抛出的异常:OutOfMemoryError异常(当场量池无法申请到内存时)。
六、程序计数器

简介:
1、定义:当前线程所执行的字节码的行号指示器。
2、作用:实现异常处理、线程恢复等基础功能。
3、原理:通过改变计数器的值来选取下一条执行的字节码指令。
4、特点:线程私有、内存空间小。
5、抛出的异常:唯一一个在jvm中无任何OutOfMemoryError的内存区域。
注:线程私有的内存区域:为了使得线程切换后恢复到正确的执行位置,每个线程都配有一个独立的程序计数器,各线程互不影响,独立存储的内存区域。
JVM简单概述的更多相关文章
- Java虚拟机(JVM)概述
JVM(Java虚拟机)是一个抽象的计算模型.就如同一台真实的机器,它有自己的指令集和执行引擎,可以在运行时操控内存区域.目的是为构建在其上运行的应用程序提供一个运行环境.JVM可以解读指令代码并与底 ...
- [转载]SharePoint 2013搜索学习笔记之搜索构架简单概述
Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...
- SNMP学习笔记之SNMP简单概述
0x00 SNMP简单概述 0.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理 ...
- SNMP简单概述
一.SNMP简单概述 1.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议& ...
- 【JVM专题】JVM从概述到调优图文详解,含思维脑图深度剖析!
JVM概述 JVM 是一种用于计算机设备的规范,它是一个虚构的计算机的软件实现,简单的说,JVM 是运行 byte code 字节码程序的一个容器. 它有一个解释器组件,可以实现 JAVA 字节码和计 ...
- JVM监控概述(图文)
JVM内存分配概述 Jvm 内存分为:堆.非堆及直接内存三大块. 堆区分为年轻代和老年代,永生代属于非堆内存. 对象优先在Eden区分配 大对象直接进入老年代 长期存活的对象将进入老年代 class. ...
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...
- JVM体系结构概述
ClassLoader(类装载器) 负责加载class文件. class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution ...
- 01 jvm学习过程概述
声明:本博客仅仅是一个初学者的学习记录.心得总结,其中肯定有许多错误,不具有参考价值,欢迎大佬指正,谢谢!想和我交流.一起学习.一起进步的朋友可以加我微信Liu__66666666 这是简单学习一遍之 ...
- 一、Java简单概述
一 . Java组成部分 JDK : java development kit (Java开发工具) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也 包括了JRE. 所以安装了 ...
随机推荐
- [CF1748F] Circular Xor Reversal
题目描述 You have an array $ a_0, a_1, \ldots, a_{n-1} $ of length $ n $ . Initially, $ a_i = 2^i $ for ...
- Cocos Creator性能调优
一. 为什么要做性能优化 性能:是程序的一种优秀的能力.唤醒快.运行持久.稳定 这种能力正在游戏上能让你的用户感觉很爽,特征表现为加载快.运行流畅.不卡顿. 所以,性能优化的终极目标是,让你的用户体验 ...
- 2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。 两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少? 如果没有有效方法,返回-
2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组. 两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少? 如果没有有效方法,返回- ...
- 开源.NetCore通用工具库Xmtool使用连载 - 图像处理篇
[Github源码] <上一篇> 介绍了Xmtool工具库中的扩展动态对象,今天我们继续为大家介绍其中的图像处理类库. 在我们的软件系统中,经常需要对图片进行各种各样的处理:例如最常见的头 ...
- StringBuilder、StringBuffer
StringBuilder 1.concat() 拼接字符串 2.indexOf() 查找 3.replace() 替换 4.subString(1,2) 截取 0,1,2 1开始 2结束 Strin ...
- 【ASP.NET Core】使用SignalR推送服务器日志
一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API.由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动.经 ...
- 修改Ubuntu登录欢迎界面
查看登录效果 run-parts /etc/update-motd.d ubuntu 与别的linux不同,直接修改/etc/motd文件重登录后无效.因为这里/etc/motd是一个符号链接,指向/ ...
- SQLServer清空数据库日志
-------SQl2008以上 清空日志-------- USE[master] GO ALTER DATABASE [数据库名称] SET RECOVERY SIMPLE WITH NO_WAIT ...
- STM32CubeMX教程12 DMA 直接内存读取
使用STM32CubeMX软件配置STM32F407开发板上串口USART1进行DMA传输数据,然后实现与实验"STM32CubeMX教程9 USART/UART 异步通信"相同的 ...
- OpenCV计算机视觉学习(15)——浅谈图像处理的饱和运算和取模运算
如果需要其他图像处理的文章及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractic ...