JVM 彻底搞懂JVM内存区域及直接内存

news2025/7/14 10:42:31

面试题:直接内存会导致OOM么?

程序计数器

代表当前线程所执行的字节码所在的行号,配合字节码解释器获取下一条需要执行的字节码指令。
代码中的分支、循环、跳转、异常处理、线程恢复都要依靠它来实现。

程序计数器是线程私有的,线程消失它就消失,每个线程维护自己的程序计数器,互不影响。

如果当前线程正在执行本地方法,此时程序计数器为空值。

虚拟机栈

虚拟机栈描述的是java方法执行的线程内存模型,当方法执行的时候,Java虚拟机会创建一个栈帧用于存储局部变量表、操作数栈、动态链接和方法出口等信息,在每个方法种调用其他方法都是进出栈的操作,当方法执行完毕,栈帧被移除。

本地方法栈

本地方法栈和虚拟机方法栈作用类似,不过它是为执行native方法服务

堆是被线程共享的一个内存区域,大部分对象都在堆上分配,少部分允许在栈上分配(通过逃逸分析)。堆中有新生代和老年代之分,目的是为了垃圾回收的更高效和更少停顿。

方法区

方法区也是一块内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等。也包括运行时常量池。

jdk8以前主要通过永久代实现方法区
jdk8开始 通过元空间实现方法区 通过本地内存实现

直接内存

直接内存和堆内内存相对应,堆外内存就是把内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理(而不是java虚拟机)。

传统BIO 访问

直接内存访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程控制的一些具体操作

目录进程控制进程终止进程退出的方式进程等待进程等待的方法wait使用方法waitpid使用方法进程程序替换替换函数execl函数execv函数execlp函数execvp函数execle函数execve函数---->只有这一个是系统调用,其他都是库函数execvpe函数补充几个知识: %s/被替换的文件…

代码随想录——冗余连接II(并查集)

题目 在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。 输入一个有向图,该图由一个有着 n 个节点&am…

vb.net自定义白板

希沃白板在学校里基本上是一直使用的,但是在非希沃电脑里面是没有启动白板的 简答介绍思路和具体的功能 1、背景颜色和画笔颜色自由切换、画笔粗细1~20可以调节。 2、画笔样式:虚线、点线、短线 3、基本图形:矩形,正方形&…

程序员级别分析,看看你是哪个级别

关于程序员的工资众说纷纭,有说开七八千的,也有人说每月上万的,但不管怎么说,程序员的工资是真的比一些文职、行政人员岗位挣得多,大家都是靠自己的能力赚钱,这没什么可比的,况且大家都是在学习…

JAVASE零基础到高级教程(1)------ 集成开发环境安装使用

一 什么是环境变量 环境变量是在操作系统中⼀个具有特定名字的对象,它包含了⼀个或者多个应⽤程序所将使⽤到的 信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运⾏⼀个程序⽽没有告诉它程 序所在的完整路径时,系统除了在当前⽬…

前端框架 Electron 使用总结

目录 一、基础搭建 通过脚手架搭建 1、Electron官方案例搭建环境 2、查看调试 3、菜单的使用 4、图标配置 5、项目打包 web应用相信每位程序员都不陌生,PC端应用可能会底层开发的就不是太多了,下面的这套技术栈就是为前端程序员快速一键搭建windo…

Linux学习——网络编程基础及TCP服务器

目录 一、网络采用分层的思想: 二、各层典型的协议: 三、网络的封包和拆包: 四、网络编程的预备知识 4.1.SOCKET 4.2 IP地址 4.3 端口号 4.4 字节序 五、TCP编程API TCP协议分成了两个不同的协议:可靠传输:用来检测网络…

读书笔记-学习GNU Emacs-3终篇

学习本书目的: emacs的学习一直是陆陆续续看博客和上手实践,这次想通过阅读"学习GNU Emacs"这本书好好系统的再复习下emacs。 yps:读技术书应该是带着一定的目的去读的,最简单的目的可能就是为了学好某一项技术或者复习下某一项技…

[附源码]java毕业设计社区健康服务平台管理系统lunwen

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

IDEA利用maven建立javaWeb项目(IDEA 2021.3.3)

1、在Idea中配置maven (1)、打开Idea,点击File,然后点击Settings,进入设置,或者直接按CtrlAltS进入设置 (2)、先在左上角的搜索框输入maven,找到maven后单击,然后在右边的maven home path的右边选择你的m…

置信度--学习笔记

置信区间是衡量测量精度的一个指标,也能显示出估算有多稳定,也就是说如果重复做某项实验,得到的结果与最初的估计有多接近。步骤: 确定要测试的情况:如“A大学男生的平均体重是80公斤”,则后续就是要测试在…

最新最全面的Spring详解(三)——Resources,验证、数据绑定和类型转换与Spring表达式语言(SpEL)

前言 本文为 【Spring】Resources与Spring表达式语言(SpEL) 等相关知识,下边将对Resources(包含:Resource接口、内置的 Resource的实现、ResourceLoader接口、应用环境和资源路径),验证、数据绑…

浅谈化工生产制造企业软件系统的选择

现在大家都在讨论全球COVID流行和经济衰退对企业的影响,以及一个有作为的企业,在当下的环境下如何求生存和谋发展的问题。“埃森哲的一份报告发现,99%的首席运营官都认为,使用实时数据运营对于应对Covid或经济衰退威胁等至关重要。…

Java的JDBC编程

1. 数据库编程的必备条件 编程语言,如Java,C、C、Python等数据库,如Oracle,MySQL,SQL Server等数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如&#xf…

Telnet SMTP协议关于“535 Error: authentication failed“解决思路

计算机网络中应用层的SMTP(Simple Mail Transfer Protocol)协议可用来发送邮件,在Telnet使用SMTP登陆账号密码时出现“535 Error: authentication failed”问题。现记录解决步骤。 1. 确认在邮箱中已开启SMTP服务。 2. 按照扫码流程,获得授权密码&…

第六章第二节:图的遍历(广度优先遍历和深度优先遍历)和应用(最小生成树、最短路径、有向无环图的描述表达式、拓扑排序、关键路径)

文章目录1. 图的遍历1.1 广度优先搜索(BFS)1.1.1 遍历序列的可变性1.1.2 复杂度的分析1.1.3 广度优先生成树1..1.4 广度优先生成森林1.2 深度优先搜索(DFS)1.2.1 树的深度优先遍历1.2.2 图的深度优先遍历1.2.2 复杂度的分析1.2.4 …

Servlet | 域对象、request对象其它常用的方法

目录 一:域对象 1、应用域对象 2、请求域对象 二:request对象其它常用的方法 一:域对象 1、应用域对象 (1)应用域对象是什么? ServletContext (Servlet上下文对象。) 什么情况…

NCV7705DQAR2G 汽车电机驱动器(NCV7705DQR2G)引脚配置

型号:NCV7705DQAR2G NCV7705DQR2G 封装:36-BFSOP 类型:电机驱动器,控制器 NCV7705/NCV7705(A)是一款功能强大的汽车车身控制系统驱动IC。该集成电路设计用于控制车辆前门的多个负载。单片集成电路可以控制镜面定位、加热、折叠等…

JS测试出最小支持字体,以及修复PDFJS的文本错误偏移

PDFJS的文本层有时会有一个错误的整体偏移,导致文本处于错误位置,导致用户选择错误的文本。 为什么会这样呢?其一,如果浏览器的文本缩放不是100%,而PDFJS没有检测这一点,导致文本排布发生偏移。安卓可以通…

[附源码]java毕业设计人口老龄化社区服务与管理平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…