性能优化方法论 软件层面提升硬件使用率 增大CPU的利用率 增大内存的利用率 增大硬盘IO的利用率 增大网络带宽的利用率 提升硬件 网卡:万兆网卡 硬盘:固体硬盘,关注IOPS和BPS指标 CPU:更快主频,更多核心,更大缓存,更优架构 内存:更快访问速度 超出硬件性能上限后使用DNS CPU基本知
hugePage的简要说明 本篇文档的主旨给linux内核支持的大页内存做一个简要的概述. 大页内存的实现是建立在大多数现代架构所都支持的多级页大小的特性之上的. 举例: x86架构下大部署CPU 的页面大小是4KB 或者是 2MB. 部分新的CPU支持1GB的页面大小. IA64的架构支持 4K,
OutOfMemory以后程序已经假死,无法再提供服务,最好的做法是dump内存,发送警告,然后重启服务 我的方案:利用at命令延迟启动 但有一个问题,at最多支持分钟操作,也就是说要1分钟以后才能启动,我的业务允许接受1分钟的延迟,总比收到警告然后等到人工去启动要好一点。 -XX:OnOutOfM
https://www.jianshu.com/p/25af713a3c6f 简介: 用来给函数运行提供内存空间的,取内存于stack上,当函数调用时,产生栈帧,函数调用释放栈帧. 栈帧存储: 局部变量 形参 内存字段描述值 如图: image.png main函数运行会开辟一片栈帧,用来存储var
https://wenfh2020.com/2020/07/30/jemalloc/ jemalloc 是一个优秀的内存分配器,通过与系统默认的内存分配器进行比较:jemalloc 内存分配性能比系统默认的分配器快 50%。 1. 安装 2. 测试 2.1. 源码 (github 测试源码) 2.2
Cheat Engine 一般简称为CE,它是一款功能强大的开源内存修改工具,其主要功能包括、内存扫描、十六进制编辑器、动态调试功能于一体,且该工具自身附带了脚本工具,可以用它很方便的生成自己的脚本窗体,CE工具可以帮助用户修改游戏或者软件中的内存数据,以获得一些其他的功能,CE可以说是目前最优秀的进程内存修改器,但需要注意的是,它的使用可能会涉及到非法或者违反游戏规则的行为,建议读者在使用 `C
当我们需要处理一个大量的数据集合时,一次性将其全部读入内存并处理可能会导致内存溢出。此时,我们可以采用迭代器`Iterator`和生成器`Generator`的方法,逐个地处理数据,从而避免内存溢出的问题。迭代器是一个可以逐个访问元素的对象,它实现了`python`的迭代协议,即实现了`__iter__()`和`__next__()`方法。通过调用`__next__()`方法,我们可以逐个访问迭代
动态链表是一种常用的动态数据结构,可以在运行时动态地申请内存空间来存储数据,相比于静态数组和静态链表,更加灵活和高效。在动态链表中,数据元素被组织成一条链表,每个元素包含了指向下一个元素的指针,这样就可以通过指针将所有元素串联起来。使用动态链表存储数据时,不需要预先申请内存空间,而是在需要的时候才向内存申请。当需要添加新的元素时,可以使用`malloc`函数动态地申请内存空间,然后将新的元素插入到
动态内存补丁可以理解为在程序运行时动态地修改程序的内存,在某些时候某些应用程序会带壳运行,而此类程序的机器码只有在内存中被展开时才可以被修改,而想要修改此类应用程序动态补丁将是一个不错的选择,动态补丁的原理是通过`CreateProcess`函数传递`CREATE_SUSPENDED`将程序运行起来并暂停,此时程序会在内存中被解码,当程序被解码后我们则可以通过内存读写实现对特定区域的动态补丁。
享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在减少内存占用或计算开销,通过共享大量细粒度对象来提高系统的性能。这种模式适用于存在大量相似对象实例,但它们的状态可以外部化(extrinsic),并且可以在多个对象之间共享的情况。
有很多的服务器选项会影响这MySQL服务器的性能,比如内存中临时表的大小、排序缓冲区等。有些针对特定存储引擎(如InnoDB)的选项,也会对查询优化很有用。
本文主要从源码的角度解析了 ThreadLocal,并分析了发生内存泄漏的原因及正确用法,最后对它的应用场景进行了简单介绍。
`Memcache` 是一个高性能、分布式的内存缓存系统,常用于缓存数据库查询结果、API调用结果、页面内容等,以提升应用程序的性能和响应速度。下面详细介绍一些 `Memcache` 的特点和使用方式: 1. **内存缓存:** `Memcache` 是一种基于内存的缓存系统,数据存储在内存中,因此
作者发现深层ViT出现的注意力崩溃问题,提出了新颖的Re-attention机制来解决,计算量和内存开销都很少,在增加ViT深度时能够保持性能不断提高 来源:晓飞的算法工程笔记 公众号 论文: DeepViT: Towards Deeper Vision Transformer 论文地址:https
作为一个Java程序员,在日常的开发中,不必像C/C++程序员那样,为每一个内存的分配而操心,JVM会替我们进行自动的内存分配和回收,方便我们开发。但是一旦发生内存泄漏或者内存溢出,如果对Java内存结构不清楚,那将会是一件非常麻烦的事情!本文笔者将为大家详解Java内存结构。
浏览器的进程模型 何为进程? 程序运⾏需要有它⾃⼰专属的内存空间,可以把这块内存空间简单的理解为进程 每个应⽤⾄少有⼀个进程,进程之间相互独⽴,即使要通信,也需要双⽅同意 何为线程? 有了进程后,就可以运⾏程序的代码了。 运⾏代码的「⼈」称之为「线程」。 ⼀个进程⾄少有⼀个线程,所以在进程开启后会⾃
目录智能指针场景引入 - 为什么需要智能指针?内存泄漏什么是内存泄漏内存泄漏的危害内存泄漏分类如何避免内存泄漏智能指针的使用及原理RAII简易例程智能指针的原理智能指针的拷贝问题智能指针的发展历史std::auto_ptr模拟实现auto_ptr例程:这种方案存在的问题:Boost库中的智能指针un
本文基于 OpenJDK17 进行讨论,垃圾回收器为 ZGC。 提示: 为了方便大家索引,特将在上篇文章 《以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的》 中讨论的众多主题独立出来。 大家在网上或者在其他讲解 JVM 的书籍中多多少少会看到这样一段关于 SoftRefer
理解程序的执行 我们要知道CPU可以自由地访问寄存器、内存。另外,程序是由操作系统执行的,所以操作系统能够控制程序的所有执行情况,限制程序的行为。 程序地执行过程: 程序是一个二进制文件,包含程序的代码指令、代码中的文本信息等(参考C语言的程序的各种段) 执行一个程序后,会将这个二进制加载到内存中,
1、值的数据类型 Redis “快”取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构。Redis 键值对中值的数据类型,也就是数据的保存形式有5种:String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合)。这5种数据类型由6种底