当前位置: 首页 > news >正文

深入理解JAVA虚拟机(一)

介绍JAVA虚拟机的运行时数据区域

按照物理结构来划分:java虚拟机主要由以下几部分构成栈、堆和程序计数器,其中栈又可以分为虚拟机栈VM stack 和 本地方法栈 Native Method Statck,堆可以划分方法区和普通的堆内存。按照逻辑划分线程私有空间和线程共线空间。

虚拟机栈、本地方法栈、程序计数器都是属于线程私有的,生命周期随着线程的创建和销毁。

方法区、堆内存属于线程共线空间,后续主要是通过垃圾回收机制来管理内存的。

(1)Java虚拟机栈

线程私有的,用于存储局部变量表、操作数栈、动态链接、方法出口,其中局部变量表存放的是基本数据类型和引用数据类型的Reference。一个槽占32bit,基本类型占用一个槽位,long和double占用两个槽位。

     注意:数组变量也是存储在虚拟机占里面的,如果开辟的数组变量内存过大,可能会引起StackOverFlowError。

导致虚拟机栈溢出的情况如下:

  • 检查递归方法,确保有终止条件并且在合理的时间内结束递归。
  • 减少方法内部的局部变量数量,特别是大的数组或集合,可以考虑使用全局静态变量。
  • 增加虚拟机栈的大小。可以通过JVM启动参数-Xss来调整,例如-Xsslm将栈大小设置为1M。
  • 单个线程请求栈深度太深导致的,可以尝试将算法改为迭代形式,减少栈的使用。

(2)程序计数器

意义上就是一个程序控制流的指示器,主要用于在线程轮流切换的时候,能够恢复到正确的执行位置,每个线程都有自己独立的程序计数器,各条线程之间计数器互不影响,独立存储。

(3)本地方法栈

和虚拟机栈作用一样,区别虚拟机栈服务于Java方法,本地方法栈则是服务于本地(Native)方法。

(4)Java堆

虚拟机所管理的内存中最大的一块,也是GC主要回收的管理内存的部分。“GC”采用粉带收集理论设计的,把Java堆划分不同的年龄段“新生代”、“老年代”。“永久代”、其中新生代有划分为“Eden空间”、“From Survivor空间”、“To Survivor空间”。

(5)方法区

主要解析Class文件之后,存放类型信息、常量、静态变量、字段、方法、接口。其中运行时常量池(Runtime Constant Pool)也是方法区的一部分,主要用于存放编译期生成的各种字面量与符号引用。

(6)直接内存

NIO(New Input/Output)类,引入了一种基于通道(channel)于缓冲器(Buffer)的I/O方式,它可以使用Navtive函数库直接分配堆外内存。

相关文章:

深入理解JAVA虚拟机(一)

介绍JAVA虚拟机的运行时数据区域 按照物理结构来划分:java虚拟机主要由以下几部分构成栈、堆和程序计数器,其中栈又可以分为虚拟机栈VM stack 和 本地方法栈 Native Method Statck,堆可以划分方法区和普通的堆内存。按照逻辑划分线程私有空间…...

从Excel文件中读取数据

笔记 import openpyxl # 打开工作簿 workbookopenpyxl.load_workbook(景区天气.xlsx) # 选择要操作的工作表 sheetworkbook[景区天气] # 表格数据是二维列表,先遍历的是行,后遍历的是列 lst[] # 存储的是行数据 for row in sheet.rows:sublst[] # 存储单…...

深入剖析MySQL的索引机制及其选型

在数据库管理系统中,索引是一种重要的优化工具,用于加速数据的检索和查询处理。在MySQL中,合理使用索引可以显著提高数据库的性能。本文将深入探讨MySQL的索引机制,包括不同类型索引的优势、劣势及在实际使用中的选型策略。 1. 什…...

校园表白墙源码修复版

此校园表白墙源码基于thinkphp,因为时代久远有不少bug,经本人修复已去除大部分bug,添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…...

Android 内存优化——常见内存泄露及优化方案

看到了一篇关于内存泄漏的文章后,就想着分享给大家,最后一起学习,一起进步: 如果一个无用对象(不需要再使用的对象)仍然被其他对象持有引用,造成该对象无法被系统回收,以致该对象在…...

Qt6.7.2中使用OpenSSL的坑

最近编写Qt Quick项目,使用Qt6.7.2版本,CMAKE编译,开始QtCreator运行代码都没有问题,访问https也正常,但打出安装包后一试,发现https访问不了,尴尬!! 查看了相关日志发现…...

Mybatis-08.基础操作-删除

一.删除 接口方法 package com.gjw.mapper;import com.gjw.pojo.Emp; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper;import java.util.List;Mapper public interface EmpMapper {// 根据ID删除数据Delete("delete from e…...

通过FDM升级Firepower

1.基本说明 本文主要主要介绍如何通过FDM来升级Firepower设备,这里以FPR1010设备为例,那么什么事Firepower、FDM呢?在开始之前,进行简单的介绍。 Firepower:思科 Firepower 是网络安全和流量管理产品的集成套件&…...

使用 Kibana 将地理空间数据导入 Elasticsearch 以供 ES|QL 使用

作者:来自 Elastic Craig Taverner 如何使用 Kibana 和 csv 采集处理器将地理空间数据采集到 Elasticsearch 中,以便在 Elasticsearch 查询语言 (ES|QL) 中进行搜索。Elasticsearch 具有强大的地理空间搜索功能,现在 ES|QL 也具备这些功能&am…...

demo说明

代码说明 MDIO总线的注册和初始化:分配并注册MDIO总线,用于与PHY设备通信。 网络设备的创建:分配网络设备(如以太网接口)。 PHY设备连接:通过phy_connect函数连接PHY设备,指定回调函数my_adj…...

【c++篇】:从基础到实践--c++内存管理技巧与模版编程基础

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:c篇–CSDN博客 文章目录 前言一.c/c内存分布二.c/c的动态内存管理方式2.1.c语言的动态内存管…...

如何减小 Maven 项目生成的 JAR 包体积 提升运维效率

在使用 Maven 构建 Java 项目时,有时需要减小生成的 JAR 包的体积,以提高部署效率或减少资源消耗。以下是一些有效的方法来减小 JAR 包的体积: 排除不必要的依赖打包时,依赖jar包独立于应用jar包 1. 排除不必要的依赖 通过排除项目…...

Python自动化会议记录与摘要生成

前言 在现代工作环境中,会议是团队沟通和决策的重要方式。然而,整理会议记录和生成摘要往往是一项耗时且容易出错的任务。幸运的是,借助Python编程语言以及一些强大的库,我们可以自动化这一过程,让机器帮助我们完成这…...

SwiftUI 中 List 或 Form 子视图关联的 swipeAction 导致展开动画异常的解决

问题现象 小伙伴们都知道,在 SwiftUI 中更快捷的增强 List 或 Form 子视图(Cell)交互功能的方法是使用 swipeAction 修改器。不过,对其使用稍有不慎也会横生枝节。 如上图所示,不适当的设置 Cell 视图布局会使 swipeAction 无法生成正确的收缩和展开动画。对此我们有什么…...

Apache Paimon Catalog

Paimon Catalog可以持久化元数据,当前支持两种类型的metastore: 文件系统(默认):将元数据和表文件存储在文件系统中。hive:在 hive metastore中存储元数据。用户可以直接从 Hive 访问表。 2.2.1 文件系统…...

C++基础:三个字符串也能搞大小?

上一篇说了三个整数比较大小,按照顺序输入的,这次我们看看字符串的,顺便把那个简化以下: 题目:这次输入三个字符串。如果用户输入“Stenbeck", “Hemingway”,“Fitzgerald”,输出将是“Fitzgerald,Hemingway&…...

了解AIGC——自然语言处理与生成

AIGC——自然语言处理与生成:揭秘AI如何生成语言 近年来,AIGC(AI Generated Content)技术迅猛发展,自然语言处理(Natural Language Processing, NLP)与生成技术的结合,使得机器不仅…...

Modern CMake 简明教程(8)- 集成Qt

在项目中集成 Qt 库需要先使用 find_package 查找 Qt 的安装位置。对于 Qt4, CMake 使用 Module 模式进行查找(FindQt4.cmake 由 CMake 提供),而 对于 Qt5、Qt6,则是使用 Config 模式进行查找,相应的 config 文件位于类似下面的目录中 D:\Qt\5.15.2\msvc2019\lib\cmake。…...

人脸应用实例:性别年龄预测

在当今科技飞速发展的时代,人脸识别技术已经从科幻电影走进了我们的日常生活。通过算法来识别人脸的特征,进而判断身份、年龄和性别,这一技术正逐步改变着我们的生活方式。今天,我们就来探讨一下基于深度学习的人脸应用实例——性…...

学习threejs,通过THREE.Raycaster给模型绑定点击事件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Raycaster光线投射概…...

零基础友好:快马AI为你定制专属visual studio code图文安装与上手教程

作为一名从零开始学习编程的新手,我深刻体会到安装开发环境是很多人遇到的第一个"拦路虎"。最近在InsCode(快马)平台上发现了一个特别适合新手的Visual Studio Code安装教程项目,它完全解决了我的困惑。下面分享我的学习笔记,希望能…...

别再花钱买内网穿透服务了!手把手教你用frp+Linux云服务器搭建自己的专属通道

零成本打造私有内网穿透通道:frp与Linux云服务器实战指南 你是否曾为远程访问家中NAS、调试开发环境或搭建私有云服务而烦恼?市面上动辄数百元的商业内网穿透服务不仅价格高昂,还常受限于带宽和稳定性。本文将带你用一台基础配置的Linux云服…...

2026论文写作工具红黑榜:一键生成论文工具怎么选?别再瞎找了!

2026年论文写作工具红黑榜出炉!红榜优先选千笔AI、ThouPen、豆包,适配国内学术规范,内容严谨可靠;黑榜需避开低质免费工具、无真实引用平台、过度依赖全文生成的工具。选择时可参考三维模型:需求匹配度 - 数据可信度 -…...

ViT在语义分割中的性能优化:从VOC2012数据集看如何提升自行车识别准确率

ViT在语义分割中的性能优化:从VOC2012数据集看如何提升自行车识别准确率 语义分割作为计算机视觉领域的核心任务之一,其目标是为图像中的每个像素分配类别标签。近年来,Vision Transformer(ViT)凭借其强大的全局建模能…...

CLIP-GmP-ViT-L-14工具实测:如何用图文匹配优化电商搜索与内容审核

CLIP-GmP-ViT-L-14工具实测:如何用图文匹配优化电商搜索与内容审核 1. 图文匹配技术的商业价值 在数字化商业环境中,图片和文字是两种最核心的内容载体。但长期以来,计算机系统很难真正理解两者之间的语义关联。CLIP-GmP-ViT-L-14模型的出现…...

【论文】信息系统项目管理师范围管理要点

本资料摘自《科科过论文集分析》,底部附PDF图片版记忆。项目管理中范围管理的六大核心环节,旨在为专业写作提供具体的实践指导与案例素材。文档强调在描述规划、需求收集和范围定义时,应避免枯燥的理论堆砌,转而通过真实的业务场景…...

UE5 - 动态材质与电子围栏:ArchvizExplorer与Map Border Collection的深度整合

1. 动态材质与电子围栏的完美结合 在UE5的建筑可视化项目中,电子围栏效果常常需要与场景动态交互。ArchvizExplorer作为建筑可视化利器,配合Map Border Collection的边界功能,能创造出令人惊艳的动态围栏效果。我最近在一个商业综合体项目中实…...

告别OpenAI API费用:手把手教你用本地BGE模型+FAISS搭建LangChain私有知识库

零成本构建企业级知识库:基于BGE与FAISS的私有化LangChain解决方案 在AI应用开发领域,数据隐私和成本控制正成为越来越多开发者的核心考量。当OpenAI等商业API按调用次数收费时,频繁的查询请求可能让个人开发者和小型团队不堪重负。更关键的是…...

jsontop.cn使用全攻略:免费无广告的在线工具站,电脑手机通用

你是否经常遇到这些问题: 拿到一堆杂乱 JSON 看不懂,想格式化却不会?需要转 Base64、算 MD5、转时间戳,却要装复杂软件?想测试正则、预览 HTML,还要搭环境、找插件?网上工具全是广告&#xff0…...

别再纠结Copilot了!手把手教你用CodeGPT插件在IDEA里免费接入DeepSeek Coder

告别Copilot依赖:用DeepSeek CoderCodeGPT打造免费智能编程环境 在代码补全工具领域,GitHub Copilot长期占据主导地位,但其每月10美元的订阅费用让许多独立开发者和小团队望而却步。今天我要分享的这套方案,不仅完全免费&#xf…...