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. 所以安装了 ...
随机推荐
- vertx的学习总结1
一. vertx是什么? 答:lib工具包 二. 为什么要使用vertx 答: 异步和非阻塞:Vert.x 采用了事件驱动和非阻塞的编程模型,可以处理大量并发请求而不会阻塞线程,提供更好的响应 ...
- 网安靶场环境_DVWA-读取文件报错File not found! Cookie中有两个security键
DVWA-文件包含漏洞-读取文件报错-ERROR: File not found! Cookie中有两个security键 1 问题复现 (1)登录DVMA后,设置DVWA Security为Low. ...
- 4.elasticsearch中聚合查询
elasticsearch聚合查询 什么是聚合,就是目的不是查询具体的文档,而是查询文档的相关性,此外还可以对聚合的文档在按照其他维度再聚合. 包含以下四种聚合 Bucket Aggregation ...
- .net Core中间件实战
新建一个ASP.NET Core Web Application 项目选中空模板 然后为项目添加一个Microsoft.Extensions.Logging.Console 由于我用的.net cor ...
- 如何用axios加后端数据库传值给前端
小杰笔记: 如何用axios : 第一步:编写数据库实体类 @Data @AllArgsConstructor @NoArgsConstructor public class User { priva ...
- Docker 部署工具
Docker 容器的创建比较简单,容器解决了应用程序对于运行环境的依赖问题,但是在当前所处的微服务盛行的情况下,手动管理容器是一件比较重复其及其枯燥的工作,这项工作理论上可以通过计算机来完成,因此涌现 ...
- Docker + Jenkins 如何实现自动化部署?
Docker + Jenkins 如何实现自动化部署? 一. 概述 实验室每次项目发布测试时,都要手动本地打包好了然后上传到服务器,替换原来nginx下面的目录文件,十分麻烦和繁琐.这次就来优化一下, ...
- TextCNN和TextRNN:原理与实践
1.TextCNN原理 CNN的核心点在于可以捕获信息的局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似N-Gram的关键信息. (1)一维卷积:使用不同尺寸的kernel_size来模 ...
- 细说Python Lambda函数的用法,建议收藏!
摘要:今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 名称是用于引用或寻址任何实体的约定.我们周围的几乎所有事物都有名字.编程领域也与此一致.但这是必须命名的吗?还 ...
- 数仓无损压缩算法:gzip算法
摘要:一种无损的压缩数据格式,是一个在类Unix上的一种文件解压缩软件. 本文分享自华为云社区<GaussDB(DWS) gzip算法简介>,作者:hw0086. [算法原理] gzip是 ...