性能分析--内存知识

news2025/1/17 1:44:01

内存相关知识

  • 计算机中与CPU进行数据交换的桥梁。内存的速度,比CPU的速度要慢很多。比磁盘速度要快很多。
  • 内存中存放数据,一旦断电就会消失。
  • linux系统的 /proc路径下的文件,都是内存文件。
  • 内存大小,一般 是GB为单位。 现在都操作系统是 64位,可以支持 几个T的内存
  • 服务器的内存: 常见 8g 16g 32g 64g
  • 内存: 内存地址 存储单元 两部分组成
  • 内存单元大小,不是固定。(一般8位)

存储单元

  • 简单数据类型可以指定长度
  • 有些数据类型不明确长度,不明确的长度存储单元,就有管理存储数据的数据结构。

列表的数据结构,索引位置,告诉你某个数据在列表的中的某个位置。列表,插入或删除一个数据, 在它的索引位置之后的所有数据,都得移动。 列表数据类型,在进行数据 插入、删除是比较慢的。

链表: 数据之间相互记录,构成一个数据链

链表插入数据、删除数据,速度比 列表要快,但是查询或获取数据的速度要比列表要慢

二叉树: 是一个链表

类、对象: 比较复杂的,数据要存放,不知道具体应该怎么存

堆:用于存放比较复杂的第数据

堆区: 连续一段地址空间,存放堆数据

栈stack区: 连续一段地址空间,来存放数据长度比较明确的数据

堆栈: 是两种数据结构。

栈stack区:LIFO ===Last In First Out 后进先出

  • 压栈 弹出

队queue列: FIFO ====FirstInFirstOut 先进先出

  • 顺序队列、 循环队列堆

内存: 有堆区和栈区。 每一个程序启动时候会申请一段内存空间,在自己申请的内存空间中,划 分出堆区和栈区

虚拟内存,是记录程序的内存中数据的区域的。

图解虚拟内存、物理内存、swap 分区的工作与管理

CPU对程序计算某个功能时候,就问虚拟内存,要xxx类型的数据应该到内存的哪个地方去获取。 虚拟内存就会返回结果给 CPU。CPU拿到这个地址之后就直接去内存条中,地址区间去取数据。

cpu从内存中,读数据,是以-页page-为单位。

php、python、go语言项目,没有强制现在项目的内存空间大小,所以一般不会有内存溢出问题,但 是并不是说,就没有内存问题。

内存溢出,只是内存问题中的一种。

内存泄露: 程序在运行过程中,某次请求申请了一段内存空间(从程序自己的内存空间中申请了一 段)使用,使用完成之后不释放,导致可用内存越来越少。

  • 可用的内存漏掉了。

内存溢出:经过一段时间的内存泄露之后,某次申请内存空间时,申请的空间大小,大于剩余可用空间,此时就内存溢出。

  • 性能角度来讲,不建议代码中使用递归。

怎么知识内存溢出了?

  • 1、观察程序的内存使用情况,完全几乎全部使用,肯定有内存溢出。
  • 2、内存溢出,不一定会报出错误。
    • 1、报错误: 日志中、直接发送给请求当作请求的响应

堆区: 新生代new、老年代Tenured、永久代Perm

  • new : Ø昙花一现,朝生夕死的对象 代码方法内部变量
    • eden区
    • from区
    • to区
  • Tenured: Ø大对象 or 多次被GC后还在的对象(顽固份子)

项目中新申请的资源都放在 new中, 使用之后判断策略,多次判断这个资源是否还用,如果还可以用,把这个资源 移动到Tenured。

YGC: 主要回收新生代的空间、回收频率高,每次收时间短

FGC: 主要回收老年代的空间、回收频率低,每次回收用到时间长

  • 还包括:回收 新生代、元空间

总的GC回收时间,期望越短越好 = YGC时间 + FGC的时间

3650+1440 = 5090

52*40 + 2*5*60 = 2080+600 = 2680

GC是资源回收,一定要有的,期望回收总时间少的。 ygc和fgc的频率是关键.

这个就要 反复测试出来,而不是计算。

  • 调整 新生代 与 老年代的 大小
    • 1、调整整个内存大小
    • 2、调整新生代老年代的配比

YGC 回收的时间 一般是小几十毫秒到小几百毫秒以内

FGC回收的时间,大几百毫秒甚至上秒

验证: 内存溢出、gc

tomcat是部署java的一个中间件,springboot开发,自身就带有tomcat,springboot的项目,可以放到 tomcat中启动,也可以直接使用 java -jar xxx.jar

tomcat的bin文件夹中 catalina.sh 配置,配置内存信息

tomcat的conf有 server.xml 配置 配置服务 协议、端口

tomcat的logs文件夹日志文件

tomcat的webapps文件夹 放项目

  • 项目打war包,自动可以解压

JAVA_OPTS=”-server -Xms512m -Xmx512m -Xmn128m -Xss256k -XX:PermSize=128m -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:filename”

打印gc的配置,一般 不在生成环境中添加。

server.xml中线程池的

配置 acceptCount: 能接收的队列长度,队列满了,再有连接就会被拒绝

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

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

相关文章

【Pt】马灯贴图绘制过程 04-玻璃脏迹

目录 效果 步骤 一、透明玻璃 二、烟熏痕迹 三、粗糙 四、浮尘 效果 步骤 一、透明玻璃 1. 打开纹理集设置,着色器链接选择“新的着色器链接” 在着色器设置中可以看到此时名称为“Main shader (Copy)” 这里修改名称为“玻璃” 在…

【加密周报】比特币“强烈看涨”信号来了!巨鲸们正疯狂囤积稳定币!SEC呼吁公众对以太币ETF提供意见!

在过去一周里,比特币价格经历了一段下跌,并在随后出现了一些反弹迹象。与此同时,链上数据显示,巨鲸们在囤积稳定币,预示着“强烈的看涨情绪”。以太坊方面,美国证券交易委员会(SEC)已…

异常练习题

第一题:分析题 package chapter09_exception_teacher.src.com.atguigu05.exer.exer2;/*** 输出结果:* 进入方法A* 用A方法的finally* 制造异常* 进入方法B* 调用B方法的finally** author shkstart* create 0:57*/ public class ReturnExceptionDemo {sta…

【算法题】树节点的第 K 个祖先

题目: 给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出,其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点。 实现…

算法 ST表

思想(本质为dp): 题目AcWing1270. 数列区间最大值: 1270. 数列区间最大值 - AcWing题库 输入一串数字,给你 M 个询问,每次询问就给你两个数字 X,Y要求你说出 X到 Y这段区间内的最大数。 输入格式 第一…

Java数据结构队列

队列(Queue) 概念 队列的使用 注意:Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口。 import java.util.LinkedList; import java.util.Queue;public class Test {public static void main(String[]…

初识二叉树和二叉树的基本操作

目录 一、树 1.什么是树 2. 与树相关的概念 二、二叉树 1.什么是二叉树 2.二叉树特点 3.满二叉树与完全二叉树 4.二叉树性质 相关题目: 5.二叉树的存储 6.二叉树的遍历和基本操作 二叉树的遍历 二叉树的基本操作 一、树 1.什么是树 子树是不相交的;…

windows server 2019-DHCP服务器搭建

一、DHCP的原理: 1,获得ip的过程 客户机发送请求给所有DHCP服务器 DHCP服务器收到请求后发送响应包给客户机 客户机收到响应包(第一个到达的)后,检验响应包里面的ip能不能用(使用ping的方式&#xff0c…

Ideal的使用技巧

一、springcloud项目如何将多个服务放到services中一起启动 1、打开ideal,再view -> Tool Windows -> services 2、在services界面 找到 run configuration type -> springboot即可 二、配置临时的启动参数 1、在edit configurations中 2、选择相应的服务…

网络原理 - HTTP / HTTPS(5)——https协议

目录 一、HTTPS是什么 为什么要进行加密 二、“加密” 是什么 三、HTTPS的工作过程 (1)引入对称加密 对称密钥的特点: (2)引入非对称加密 非对称加密的特点: (3)中间人攻击…

深入浅出 -- 系统架构之负载均衡Nginx反向代理

一、Nginx反向代理-负载均衡 首先通过SpringBootFreemarker快速搭建一个WEB项目:springboot-web-nginx,然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下: Controller public class IndexNginxControl…

免费SSL证书申请指南

在互联网时代,HTTPS安全协议已成网站标配,而SSL/TLS证书是实现HTTPS的关键。以下是如何申请免费证书的简明流程: 1.选择证书颁发机构(CA):现今很多知名CA如JoySSL、Lets Encrypt等提供免费SSL证书服务。选定…

云备份day02

📟作者主页:慢热的陕西人 🌴专栏链接:C云备份项目 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容介绍了第三方库jsoncpp和bundle库的使用 文章目录 云备…

关于Linux下的进程状态(进程篇)

目录 Linux操作系统的一般进程状态 关于阻塞 关于挂起 Linux内核状态源代码: 关于僵尸进程 关于孤儿进程 Linux操作系统的一般进程状态 新建:字面意思运行:task_struct结构体在运行队列中排队,就叫做运行态阻塞:等待非…

Java项目:基于Springboot+vue社区医院管理系统设计与实现(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue社区医院管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

机器学习知识点全面总结

机器学习按照模型类型分为监督学习模型、无监督学习模型两大类。 1、有监督学习 有监督学习通常是利用带有专家标注的标签的训练数据,学习一个从输入变量X到输入变量Y的函数映射。Y f (X),训练数据通常是(nx,y)的形式,其中n代表训练样本的大…

基于springboot实现甘肃非物质文化网站系统项目【项目源码+论文说明】

摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本甘肃非物质文化网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信…

Java Number类(详细)

一,Number java.lang.Number 类是抽象类,用于表示各种数值类型的对象。它是 Java 中所有数值类型的包装类的超类。Number 类主要有以下几个特点和作用: 抽象类:Number 类是一个抽象类,不能直接实例化,但可以…

计算机中数的表示

0. 简介 介绍计算机中数的表示方法,主要内容来自 c s a p p csapp csapp。 1. 整数的表示 包括有符号整数与无符号整数的表示。 假设 w → [ w n − 1 w n − 2 . . . w 0 ] \overrightarrow w[w_{n-1}w_{n-2}...w_0] w [wn−1​wn−2​...w0​] 为一种整数。…

【Python系列】将生成的 JSON 数据写入 JSON 文件

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…