JavaWeb-JVM内存管理机制
JavaWeb-JVM内存管理机制
- 一、JVM内存管理概述
- 1.1 什么是JVM内存管理
- 1.2 物理内存与虚拟内存
- 1.3 内核空间与用户空间
- 二、java中哪些组建需要使用内存
- 2.1 Java堆
- 2.2 线程
- 2.3 类和类加速器
- 2.4 NIO
- 2.5 JNI
- 三、JVM内存结构
- 3.1 PC寄存器
- 3.2 Java栈
- 3.3 堆
- 3.4 方法区
- 3.5 运行时常量池
- 3.6 本地方法栈
- 四、JVM内存分配策略
- 4.1 通用的内存分配策略
- 4.2 Java中的内存分配详解
- 五、JVM内存回收策略
- 5.1 静态内存分配和回收
- 5.2 动态内存分配和回收
- 5.3 如何检测垃圾
- 5.4 基于代码的垃圾收集算法
- 六、内存问题分析
- 6.1 GC日志分析
- 6.2 堆快照文件分析
- 6.3 JVM Crash日志分析
一、JVM内存管理概述
1.1 什么是JVM内存管理
JVM内存管理是Java虚拟机所特有的一种内存管理技术,它主要负责动态的分配和回收内存资源。这种自动内存管理机制可以帮助Java程序员更有效地处理内存,避免了频繁编写和删除代码,从而减少了内存泄露和溢出的问题。
JVM管理的内存包括五个不同的运行时数据区域:程序计数器、虚拟机栈、本地方法栈、堆和方法区。
程序计数器是每个线程私有的内存区域,它可以看做是当前线程执行字节码的行号指示器。虚拟机通过改变这个计数器的值来选择下一条需要执行的字节码指令。
虚拟机栈则是用于存储局部变量表、操作数栈、动态链接、方法出口等信息的数据区域。每当一个方法被调用至执行完成,都会对应一个栈帧在这个区域进行入栈和出栈的操作。
本地方法栈与虚拟机栈类似,只不过它是服务于本地方法(Native Method)的。而堆和方法区则是用来存储已被虚拟机加载的类信息、常量、静态变量等数据的区域。
1.2 物理内存与虚拟内存
物理内存和虚拟内存都是计算机系统中重要的内存管理技术。物理内存,也被称为RAM,是计算机中实际存在的内存,相当于手机上的运行内存。而虚拟内存则是建立在物理内存之上的一种内存管理技术,它将计算机的物理内存和硬盘上的临时空间组合在一起,当物理内存不足时,虚拟内存会将部分数据从物理内存移动到硬盘上的分页文件。
这两者间的联系在于,虚拟内存的管理需要借助于物理内存,同时虚拟内存的使用也会影响到物理内存的使用。如果虚拟内存过于频繁地使用硬盘空间,则会降低计算机的整体性能。在系统运行过程中,任何程序都不会直接访问物理内存,而是访问虚拟内存。因此,虚拟内存的存在有效地解决了物理内存不足的问题,增强了计算机的运行能力。
1.3 内核空间与用户空间
操作系统将可访问的内存空间分为两部分,一部分是内核空间,一部分是用户空间。内核空间是操作系统内核访问的区域,独立于普通的应用程序,是受保护的内存空间。而用户空间则是普通应用程序可以访问的内存区域。
以Linux为例,内核空间是Linux内核的运行空间,用户可以在这个空间中执行任意命令,调用系统的一切资源;相对而言,用户空间是用户程序的运行空间,它只能执行简单的运算,并且不能直接调用系统资源。当用户程序需要调用系统资源时,例如读写文件,必须通过系统接口(也称为system call),向内核发出指令。这种设计保证了系统的安全性,即使用户的程序崩溃了,内核也不会受到影响。
值得注意的是,无论是内核空间还是用户空间,它们都处于虚拟空间中。对于32位操作系统来说,其寻址空间(虚拟地址空间)为4G(即2的32次方),这意味着一个进程的最大地址空间为4G。操作系统的核心即内核,就位于这个寻址空间中
相关文章:
JavaWeb-JVM内存管理机制
JavaWeb-JVM内存管理机制 一、JVM内存管理概述1.1 什么是JVM内存管理1.2 物理内存与虚拟内存1.3 内核空间与用户空间二、java中哪些组建需要使用内存2.1 Java堆2.2 线程2.3 类和类加速器2.4 NIO2.5 JNI三、JVM内存结构3.1 PC寄存器3.2 Java栈3.3 堆3.4 方法区3.5 运行时常量池3…...
阿里云oss存储文件上传功能实现(保姆级教程)
先登录: 点击进入控制台 点击左上角导航栏按钮 搜索oss,点击进入 进入之后点击立即开通oss按钮,开通之后点击下图立即创建,弹出创建Bucket 填上Bucket名称,读写权限改为公共读。其他不变点击确定创建,完成…...
centos7配置 局域网自动解析hostname
这样可以让局域网别的电脑直接通过hostname来连接这台电脑。 如果不是windows系统,可以用hostname.local来连接 主要是用到了mdns的功能,需要安装nss-mdns。 vmware下nat模式下,宿主机也可以通过连接hostname使用。 yum install epel-releas…...
wireshark 过滤设置
gpt: Wireshark 是一个网络分析工具,可以用来捕获和分析网络数据包。你可以使用过滤器来筛选并查看你感兴趣的数据包。Wireshark 使用的是基于BPF(Berkeley Packet Filter)语法的过滤器。以下是一些常见的 Wireshark 过滤器设置:…...
SpringBoot-过滤器Filter+JWT令牌实现登录验证
登录校验-Filter 分析 过滤器Filter的快速入门以及使用细节我们已经介绍完了,接下来最后一步,我们需要使用过滤器Filter来完成案例当中的登录校验功能。 我们先来回顾下前面分析过的登录校验的基本流程: 要进入到后台管理系统,我…...
VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)
目录 一、服务器信息二、192.168.132.35服务器上安装mysql(主)2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 三…...
python 实现蚁群算法(simpy带绘图)
这里使用了蚁群算法求解了旅行商问题,同时结合了simpy来绘图 选择下一个食物的函数为: probability[i] pheromone[self.now][self.not_to_foods[i]] ** pheromone_w (1 / distance[self.now][self.not_to_foods[i]]) ** distance_w 该条路概率权重该点…...
OpenAI 董事会宫斗始作俑者?一窥伊尔亚·苏茨克维内心世界
OpenAI 董事会闹剧应该是暂告一个段落了,Sam Altman和Greg Brockman等一众高管均已加入微软,还有员工写联名信逼宫董事会的戏码,关注度已经降下来了。 但是,这场宫斗闹剧的中心人物Ilya Sutskever大家关注度不算太高。他本人是纯粹的技术男,极少抛头露面透露其内心世界。…...
Android App 启动状态有几种?
startup state Android 启动状态(startup state)1.1、冷启动(Cold Start)1.2、温启动(Warm Start)1.3、热启动(Hot Start)1.4、后台启动(Background Start) 优…...
Spring Cloud Alibaba Sentinel 简单使用
Sentinel Sentinel 主要功能Sentinel 作用常见的流量控制算法计数器算法漏桶算法 令牌桶算法Sentinel 流量控制Sentinel 熔断Sentinel 基本使用添加依赖定义资源定义限流规则定义熔断规则如何判断熔断还是限流自定义 Sentinel 异常局部自定义异常全局自定义异常系统自定义异常…...
nvm切换node后,没有npm
当我们想要在不同的 Node.js 版本之间切换的时候,通常会使用 nvm(Node Version Manager) 来完成。但是,当我们在使用 nvm 切换 Node.js 版本的时候,可能会遇到没有 npm 的情况。这种情况通常发生在我们在新环境或者重新…...
Redis-高性能原理剖析
redis安装 下载地址:http://redis.io/download 安装步骤: # 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar -zxvf redis-5.0.3.tar…...
ORA-00600 【3948】,ORA-00600 【3949】
前言 这个报错没有从ORA600那个tool中查到。 回顾 环境 环境是windows 11203 rac环境,非归档数据库 有部分数据文件建到了本地文件系统。目标是将部分数据文件通过switch to copy的形式移动到diskgroup里 流程 srvctl关闭双节点, 启动单节点到moun…...
flink 查看写入starrocks的数据量 总行数
针对该connector: https://github.com/StarRocks/docs.zh-cn/blob/main/loading/Flink-connector-starrocks.md...
全链路压测的步骤及重要性
全链路压测是一种系统性的性能测试方法,旨在模拟真实用户场景下的完整操作流程,全面评估软件系统在不同压力下的性能表现。这种测试方法对于保证应用程序的高可用性、稳定性和可扩展性至关重要。 1. 全链路压测概述 全链路压测是在模拟实际用户使用场景的…...
使用Python实现几种底层技术的数据结构
使用Python实现几种底层技术的数据结构 数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这…...
前端面试题【72道】
文章目录 1. 说说你对盒子模型的理解2. css选择器有哪些?优先级?哪些属性可以继承?3. 元素水平垂直居中的方法有哪些?如果元素不定宽高呢?4. 怎么理解回流跟重绘?什么场景下会触发?5. 什么是响应…...
OpenGL 绘制文本(QPainter)
文章目录 一、简介二、实现代码三、实现效果一、简介 OpenGL中并没有绘制文本的相关函数,因此这里仍然用的是Qt中的QPainter工具来绘制文本,但是其相关的定位这里仍然会用OpenGL中的坐标转换。这里对其也进行封装一下,方便后续使用。 二、实现代码 TextDrawable.h #ifndef T…...
windows电脑连接Android和iPhone真机调试
windows电脑连接Android和iPhone真机调试 目前用的是Hbuilder X编辑器,在正常情况下,Android手机需要在 "设置 ----> 更多设置 ----->关于手机 ------> 版本号(手指点击5-7下即可打开开发者模式)"(我的是vivo的…...
windows上 adb devices有设备 wsl上没有
终于解决了!!!! TAT,尝试了很多种办法。 比如WSL中的adb和Windows中的adb版本必须一致,一致也没用,比如使用 ln 建立链接也没用。 这个解决办法的前提是windows中的abd是好用的。 ●在windows…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
