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

JVM 2015/3/15

定义:Java Virtual Machine -java程序的运行环境(java二进制字节码的运行环境)

好处

一次编写,到处运行

自动内存管理,垃圾回收

数组下标越界检测

多态

比较:jvm/jre/jdk

常见的JVM:HotSpot

学习路线👇

内存结构

1.程序计数器

定义

Program Counter Register 程序计数器(寄存器) 

(程序计数器)作用:记住下一条jvm指令的执行地址

特点

线程私有的

不会存在内存移除

2. 虚拟机栈

栈——线程运行需要的内存空间

栈帧——每个方法运行时需要的内存

一个栈由多个栈帧组成

每个线程运行时需要的内存,称为虚拟机栈

每个栈由多个栈帧组成,每个栈帧对应着每次方法调用时所占的内存

每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法

问题

1.垃圾回收是否涉及栈内存? 

垃圾回收只回收堆内存的无用项。不需要对栈内存进行垃圾回收的处理。

2.栈内存分配越大越好吗?

栈并不是越大越好,大只是更多次的方法递归调用。并不能增加效率,反而会减少线程数量。

3.方法内的局部变量是否线程安全?

如果方法内局部变量没有逃离方法的作用范围,他是线程安全的。

如果是局部变量引用了对象,并逃离方法的作用范围,需要考虑线程安全。

栈内存溢出

栈帧过多导致栈内存溢出(无限递归)

栈帧过大导致栈内存溢出

线程运行诊断

案例1:cpu占用过多

定位,用top定位哪个进程对cpu的占用过高

ps H -eo pid,tid,%cpu|grep 进程id(用ps命令进一步定位是哪个线程引起的cpu占用过高)

jstack 进程id(可以根据线程id找到有问题的线程,进一步定位到问题代码的源码行号)

案例2:程序运行很长时间没有结果

jstack 进程id,可能是多个线程发生了死锁

3.本地方法栈

Java虚拟机调用本地方法,需要给这些本地方法提供内存。

本地代码,不是用java编写的。Java有限制,不能直接和操作系统打交道,就需要由c或c++编写的本地方法,来真正的和操作系统底层的API打交道。native 

4.堆

通过new关键字,创建的对象都会使用堆内存

特点

它是线程共享的,堆中对象都需要考虑线程安全的问题。

有垃圾回收机制。

堆内存溢出

对象被当成垃圾回收的条件是没有人使用他,如果不断地产生对象,而产生的新对象永远有人在使用,这样的对象达到一定数量,就会导致堆内存耗尽。

堆内存诊断

工具

19_堆_内存诊断_jmap_哔哩哔哩_bilibili

20_堆_内存诊断_jconsole_哔哩哔哩_bilibili

21_堆_内存诊断_jvirsualvm_哔哩哔哩_bilibili

5.方法区

方法区是所有Java虚拟机线程共享的区,它存储了跟类相关的区(成员变量、方法数据、成员方法构造器方法以及他们的代码)。

方法区在虚拟机启动时被创建,逻辑上是堆的组成部分。?

相关文章:

JVM 2015/3/15

定义:Java Virtual Machine -java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写,到处运行 自动内存管理,垃圾回收 数组下标越界检测 多态 比较:jvm/jre/jdk 常见的JVM&…...

DeepSeek辅助学术写作中期能力及提示词分享

目录 确立三论 收集资料 选取论据 展开论证 大家好这里是AIWritePaper官方账号!更多内容👉AIWritePaper~在如今这个学术圈的“快车道”上,时间就像是一场永不停歇的赛跑,而论文质量则是那颗我们拼命追逐的“金苹果”。最近一款…...

Git 实战指南:本地客户端连接 Gitee 全流程

本文将以 Gitee(码云)、系统Windows 11 为例,详细介绍从本地仓库初始化到远程协作的全流程操作 目录 1. 前期准备1.1 注册与配置 Gitee1.2 下载、安装、配置客户端1.3 配置公钥到 Gitee2. 本地仓库操作(PowerShell/Git Bash)2.1 初始化本地仓库2.2 关联 Gitee 远程仓库3. …...

汇编基础知识

机器语言 1、机器语言是机器指令的集合,机器指令就是机器可以正确执行的命令,由二进制数组成 2、当今我们常用的是pc机,由一个芯片完成上述功能,即CPU是一种微处理器,每一种微处理器由于自身硬件设计和内部构造不同都…...

线程池的拒绝策略适用场景思考

ThreadPoolExecutor有四种拒绝策略。刚开始学习线程池的时候我就觉得,就是应该当任务饱和(达到拒绝策略)时,就应该拒绝任务,抛出异常。最近仔细思考了下,既然线程池这么设计,也应该有一定的道理…...

on-policy对比off-policy

目录 持续更新。。。 on-policy与off-policy的定义 Q-learning属于on-policy算法还是off-policy算法? 为什么off-policy适用于从离线经验或多种探索策略中学习,明明 On-policy 也可以基于探索学习的啊? 重要性权重方法 off-policy方法可…...

如何记录Matlab程序运行过程中所占用的最大内存(续)

在上一篇博客中,我们讨论了如何记录Matlab程序运行过程中所占用的最大内存。 博客原文:如何记录Matlab程序运行过程中所占用的最大内存-CSDN博客 但经过测试发现,这与实际有非常大的差异。运行如下例子: clear;clc; profile on…...

解决MySQL字符集冲突引发的“Illegal mix of collations”错误

引言 在开发过程中,我们常常会遇到数据库层面的字符集兼容性问题。本文将通过一个典型的案例,分析因字符集不匹配导致的 Illegal mix of collations 错误,并提供完整的解决方案,帮助开发者彻底规避此类问题。 问题现象 假设我们…...

Vue3:F12后,页面弹出runtime errors及提示的解决办法

解决: vue.config.jsdevServer: {client: {overlay: false}, },关闭提示 main.js // 定义特性标志 window.__VUE_PROD_DEVTOOLS__ false window.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ false...

学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)

11.5 案例-文件上传-阿里云OSS-入门 出现报错:Process exited with an error: 1 (Exit value: 1),点击exec那一行,出现错误原因:Command execution failed. 在CSDN上找到了解决方法: 之后出现新的报错&…...

EDAS:投稿经验-word版本-问题解决

1. 字体不对,字体未嵌入问题 问题:word转PDF后,总是显示有字体格式不对(忘记截图了)。 办法:1. EDAS投稿PDF格式问题-CSDN博客-PDF上修改 IEEE论文检测的字体未嵌入问题Times New Ro…...

【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]

hello,好久不见! 云边有个稻草人-CSDN博客 上篇内容,回顾一下吧【数据结构初阶第十八节】八大排序系列(上篇)—[详细动态图解代码解析]-CSDN博客 今天我们来学习下篇 目录 (2)快速排序 【挖坑法】 —思路 —思路…...

不可不知的分布式数据库-TiDB

不可不知的分布式数据库-TiDB 介绍TiDb架构TiDb与Mysql的区别功能特性性能表现数据可靠性运维管理成本 Docker部署TiDB1. 获取 TiDB 配置文件2. 启动 TiDB 集群3. 连接到 TiDB4. 停止和清理 TiDB 集群注意事项 实用案例TiDB实现分布式事务实现原理实现方式SQL 方式编程方式 注意…...

BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分

checksec exeinfo 开启了全保护 64位 查看函数: 堆题 增删查改齐了 可以在编辑堆的时候重新设置大小 存在堆溢出 delete函数的指针清零了 无UAF 想法是通过unsorted bin泄露libc基址: from pwn import *p process(./babyheap) #p remote("node…...

AI绘画软件Stable Diffusion详解教程(11):图生图进阶篇(局部用上传蒙版重绘)

总的功能与上一篇相似,但是在Stable Diffusion网页上手工涂绘的方法,有可能会因不够精细,导致重绘的效果不佳,涂绘区与非涂绘区的衔接有可能会出问题。这个时候可以用photoshop来制作蒙版,精确的圈出需要重绘的地方&am…...

SAP的WPS导出找不到路径怎么办;上载报错怎么办

一.打开注册编辑器 二.输入以下地址 计算机\HKEY_CLASSES_ROOT\ExcelWorksheet\Protocol\StdFileEditing\Server 去除掉EXE后面的命令即可 二:WPS上载文件没反应怎么办 如何切换整合模式或多组件模式-WPS学堂 根据官方操作把整合模式改成多组件模式...

Go语言不定长参数使用详解

不定长参数(Variadic Parameters)使用详解 核心概念 语法特性:...T 表示函数可接受任意数量的T类型参数底层实现:不定长参数在函数内部实际存储为切片类型 []T展开操作符:调用时使用 slice... 可将切片展开为独立参数…...

django如何配置使用asgi

以下是 Django 配置使用 ASGI 的完整指南: 一、配置前提 Django 版本:确保使用 Django 3.0(原生支持 ASGI)必要依赖:pip install daphne channels二、基础配置步骤 1. 创建/修改 ASGI 入口文件 在 Django 项目根目录…...

在C语言基础上学Java【Java】【一】

众所周知,Java是C风格的语言,对于学过C语言的人学Java可以快速适应。 废话不多说,直接边看代码边学。 数据类型,输入和输出 public class a1 {//a1是类名,就是文件名,所有的可执行代码需要写在这个里面 /…...

使用 Promise 和 .then() 解决同异步问题

在购物车功能中,用户点击“加入购物车”或“删除购物车”时,可能会遇到数据同步问题。例如,当用户快速连续点击“删除”按钮时,可能会导致删除操作基于过时的数据,从而引发错误。为了解决这个问题,我们可以…...

defineExpose函数

在软件开发中&#xff0c;特别是在像 Vue.js 这样的框架中&#xff0c;defineExpose 是一个函数&#xff0c;用于显式地将组件的某些属性或方法暴露给其父组件或其他组件。这在你想控制组件的内部状态或功能对外部可见性时非常有用。 Vue.js 3 中的示例&#xff1a; <scri…...

LabVIEW烟气速度场实时监测

本项目针对燃煤电站烟气流速实时监测需求&#xff0c;探讨了静电传感器结构与速度场超分辨率重建方法&#xff0c;结合LabVIEW多板卡同步采集与实时处理技术&#xff0c;开发出一个高效的烟气速度场实时监测系统。该系统能够在高温、高尘的复杂工况下稳定运行&#xff0c;提供高…...

台式机电脑组装---电源

台式机电脑组装—电源 22 33 主板供电是聚集了12V&#xff0c;5V,3.3V的24pin CPU供电的话主要是12V的44pin供电 44pin合并之后&#xff0c;就是8pin 55 SATA硬盘会使用饼io口取电&#xff0c;从电源获取12v,5v,3.3v的电 33...

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…...

2023年蓝桥杯 省赛 ————特殊日期

2.特殊日期 - 蓝桥云课 错误原因&#xff1a; 分不清大小月&#xff0c;将闰年的2月天数当成了28天&#xff0c;非闰年当成了27天&#xff0c;因此出错 错误代码如下&#xff1a; package Lanqiao;import java.util.Scanner;/*** author zb* date2025/3/16 13:22*/ public …...

电动车出入库管理软件,电动车维修保养售后服务管理系统,佳易王电动车店管理系统操作教程

一、概述 本实例以 佳易王电动车店管理系统 为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a; 操作便捷性高 软件功能实用且…...

计算机网络-综合布线系统

工作区子系统&#xff1a;由信息插座、插座盒、连接跳线和适配器组成 水平子系统&#xff1a;由一个工作区的信息插座开始&#xff0c;经水平布置到管理区的内测配线架的线缆所组成 管理子系统&#xff1a;由交连、互连配线架组成。管理子系统为连接其它子系统提供连接手段 …...

【蓝桥杯】24省赛:数字串个数

思路 本质是组合数学问题&#xff1a; 9个数字组成10000位数字有9**10000可能 不包括3的可能8**10000 不包括7的可能8**10000 既不包括3也不包括77**10000 根据容斥原理&#xff1a;结果为 9 ∗ ∗ 10000 − 8 ∗ ∗ 10000 − 8 ∗ ∗ 10000 7 ∗ ∗ 10000 9**10000 - 8**10…...

手写一些常见算法

手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序欧几里得算法求最大公约数 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private st…...

AI自动生成数据

文章目录 概要案例生成简单的文本数据 概要 合成数据是人工生成的数据而不是从现实世界事件中收集的数据。它用于模拟真实数据&#xff0c;而不会泄露隐私或遇到现实世界的限制 安装依赖&#xff1a;pip install langchain_experimental 合成数据的优势&#xff1a; 1.隐私…...

【STM32】从新建一个工程开始:STM32 新建工程的详细步骤

STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中&#xff0c;下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构&#xff1a;STD_STM…...

【Go语言圣经3.6】

目标 概念 常量与变量的主要区别在于&#xff1a; 不可变性&#xff1a;常量在声明后其值就固定下来&#xff0c;不能再被修改。这保证了程序运行时不会因意外修改而导致错误。 使用不可变数据&#xff08;例如数学常数 π&#xff09;可以避免意外修改带来的问题 编译期计算…...

[IP]UART

UART 是一个简易串口ip&#xff0c;用户及配置接口简单。 波特率从9600至2000000。 该 IP 支持以下特性&#xff1a; 异步串行通信&#xff1a;标准 UART 协议&#xff08;1 起始位&#xff0c;8 数据位&#xff0c;1 停止位&#xff0c;无奇偶校验&#xff09;。 参数化配置…...

Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传

以下内容源于日常学习的整理&#xff0c;欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图&#xff1a; 注意&#xff0c;下面谈及的所有方式&#xff0c;都要求两者的IP地址处于同一网段&#xff0c;涉及到的软件资源见felm。 一、Windows主…...

4.好事多磨 1

前言 我们已经学习了创建套接字和向套接字分配地址&#xff0c;接下来正式讨论通过套接字收发数据。 之前介绍套接字时举例说明了面向连接的套接字和面向消息的套接字这2种数据传输方式&#xff0c;特别是重点讨论了面向连接的套接字。这次将具体讨论这种面向连接的服务器端/客…...

AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月18日第22弹

前面由于工作原因停更了很长时间&#xff0c;停更期间很多彩友一直私信我何时恢复发布每日预测&#xff0c;目前手头上的项目已经基本收尾&#xff0c;接下来恢复发布。当然&#xff0c;也有很多朋友一直咨询3D超级助手开发的进度&#xff0c;在这里统一回复下。 由于本人既精…...

相机标定之DLT算法学习

文章目录 1.针孔相机模型2.各个坐标系的定义1&#xff09;世界坐标系&#xff08;world coordinate&#xff09;2&#xff09;相机坐标系&#xff08;camera coordinate&#xff09;3&#xff09;图像坐标系&#xff08;film coordinate&#xff09;4&#xff09;像素坐标系&am…...

Flask实时监控:打造智能多设备在线离线检测平台(升级版)

前言 武林之中&#xff0c;最讲究的便是“掌控”。若是手下弟子忽然失踪&#xff0c;若是江湖好友生死未卜&#xff0c;岂不令人寝食难安&#xff1f;今日&#xff0c;吾等化身技术侠客&#xff0c;祭出Flask实时监控大法&#xff0c;打造一款智能多设备在线离线检测平台&…...

【计算机网络】一二章

一 二 非常棒的例子 相同的传播时延&#xff0c;带宽越大&#xff0c;该链路上所能容纳的比特数越多 相同的传播时延&#xff0c;带宽越大&#xff0c;该链路上所能容纳的比特数越多 往返时间&#xff08;Round-Trip Time&#xff0c;RTT&#xff09;s是指从发送端发送数据分组…...

003-掌控命令行-CLI11-C++开源库108杰

首选的现代C风格命令行参数解析器! &#xff08;本课程包含两段教学视频。&#xff09; 以文件对象监控程序为实例&#xff0c;五分钟实现从命令行读入多个监控目标路径&#xff1b;区分两大时机&#xff0c;学习 CLI11 构建与解析参数两大场景下的异常处理&#xff1b;区分三…...

如何针对大Excel做文件读取?

针对大Excel文件&#xff08;如超过百万行&#xff09;的读取&#xff0c;传统的一次性加载到内存的方式会导致 内存溢出&#xff08;OOM&#xff09;&#xff0c;需采用 流式读取&#xff08;Streaming&#xff09; 或 分块读取&#xff08;Chunk&#xff09; 的策略。以下是具…...

数据链路层协议

目录 一、Mac地址 二、以太网&#xff08;Mac&#xff09; 三、MTU 四、ARP协议 一、Mac地址 注意&#xff1a;mac地址是全世界唯一的&#xff0c;而ip地址在不同子网中是可以重复的。 我们在之前说过&#xff0c;Mac地址如果想要进行网络通信&#xff0c;就需要让交换机记…...

【笔记】计算机网络——数据链路层

概述 链路是从一个结点到相邻结点的物理路线&#xff0c;数据链路则是在链路的基础上增加了一些必要的硬件和软件实现 数据链路层位于物理层和网络层之间&#xff0c;它的核心任务是在直接相连的节点&#xff08;如相邻的交换机&#xff0c;路由器&#xff09;之间提供可靠且…...

在制作电脑的过程中,如何区分整机性能问题和应用自身性能问题

在制作电脑的过程中&#xff0c;区分整机性能问题和应用自身性能问题非常重要。这两类问题的表现可能相似&#xff08;如卡顿、响应慢等&#xff09;&#xff0c;但原因和解决方法完全不同。以下是区分和定位问题的方法&#xff1a; 1. 整机性能问题的特征 整机性能问题通常与…...

高光谱相机在水果分类与品质检测中的应用

一、核心应用领域 ‌外部品质检测‌ ‌表面缺陷识别&#xff1a;通过400-1000nm波段的高光谱成像&#xff0c;可检测苹果表皮损伤、碰伤等细微缺陷&#xff0c;结合图像分割技术实现快速分类‌。 ‌损伤程度评估&#xff1a;例如青香蕉的碰撞损伤会导致光谱反射率变化&#…...

【零基础入门unity游戏开发 —— 通用篇】层级(Layer)、层级编号、层级二进制掩码和unity层级检测原理

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...

9、STL中的multimap使用方法

一、了解 multimap是一个允许键&#xff08;key&#xff09;重复的关联容器。适合用于一对多的更新。 允许多个键拥有相同的值。基于红黑树。 multimap特性 键允许重复&#xff1a;允许多个键有相同的值。无 [ ] 运算法&#xff1a;禁止用 下标访问&#xff0c;因为键不唯一。…...

keepalived的工作原理和脑裂

一、Keepalived工作原理 keepalived是一个用于实现高可用和负载均衡的服务&#xff0c;主要基于虚拟路由协议&#xff0c;解决了nginx一台机器的单点故障问题。通过将两台nginx都配置keepalived&#xff0c;让两天nginx互为主机和备机&#xff1b;且keepalived通过 VRRP 协议和…...

k8s资源管理介绍

1.命令式管理常见的命令 资源管理方式 kubectl get nodes查看集群 kubectl get pods 查看所有pod kubectl get pod pod名 -o yaml 以yaml形式查看某个pod kubectl create namespace dev创建一个dev组 Namespace 是 Kubernetes 中用于隔离资源的一种机制。通过 Namespace&a…...

激光slam学习笔记10---ubuntu2004部署运行fastlivo2踩坑记录

背景&#xff1a;mars实验室又发福利啦&#xff01;跑跑效果&#xff0c;验了那句&#xff0c;mars出品&#xff0c;必属精品&#xff01;本人pc环境ubuntu20.04&#xff0c;基本流程按照readme走就行&#xff0c;sophus和vikit安装有些注意地方。本文做了一些部署踩坑记录&…...