内存管理

BestOrNothing_20153 天前
c++·内存管理·智能指针·裸指针·对象生命周期
C++ 智能指针(末):new vs unique_ptr 终极对比 + “指针成员到底是不是创建对象”一次讲透目录一、前言二、结论先行三、传统 new/delete 写法(下篇问题源头)3.1 表面上没问题(“工程幻觉”)
superman超哥4 天前
开发语言·后端·rust·内存管理·rust内存泄漏
Rust 内存泄漏检测与防范:超越所有权的内存管理挑战内存泄漏是 Rust 中一个微妙却重要的话题。虽然 Rust 的所有权系统能够防止悬垂指针、双重释放等内存安全问题,但它无法完全防止内存泄漏——分配的内存永远不被释放,逐渐消耗系统资源直到耗尽。更令人惊讶的是,Rust 认为内存泄漏是内存安全的——std::mem::forget 是安全函数,引用循环不触发编译错误。这种设计源于深刻的权衡:完全防止内存泄漏需要垃圾回收或运行时检查,违背了零成本抽象原则。但内存泄漏在长时间运行的服务器、嵌入式系统、实时应用中是致命的。理解 Rust 中内存泄漏的根源——引用
superman超哥8 天前
开发语言·后端·性能优化·rust·内存管理·内存分配策略
Rust 减少内存分配策略:性能优化的内存管理艺术内存分配是现代应用程序性能的关键瓶颈之一。每次堆分配都涉及系统调用、锁竞争、元数据维护和可能的内存碎片,单次分配的开销可达数百纳秒。在高性能场景中,频繁的小对象分配会成为性能杀手,占用大量 CPU 时间并导致缓存失效。Rust 的所有权系统和零拷贝语义天然支持减少分配,但充分利用这些特性需要深入理解内存管理策略。从对象池和内存复用到预分配和容量规划,从栈分配到小字符串优化(SSO),从 Cow 语义到自定义分配器,Rust 提供了丰富的工具和模式来最小化分配开销。理解何时分配发生、如何避免不必要的分配、怎
better_liang10 天前
java·jvm·面试题·内存管理·性能调优·垃圾回收
每日Java面试场景题知识点之-JVMJVM(Java虚拟机)是Java程序运行的核心环境,深入理解JVM的工作原理对于Java开发者来说至关重要。本文将通过实际面试场景,深入探讨JVM的内存管理、垃圾回收机制以及性能优化等核心知识点。
BestOrNothing_201510 天前
c++·内存管理·内存泄漏·堆内存·raii·内存换算·异常安全
C++ 内存泄漏的“真实成本”: 内存单位换算、堆分配开销与工程级判断目录相关内容链接前言文章摘要一、内存单位与大小换算(工程需熟知)1.1 bit 与 byte1.2 KB / MB / GB(内存采用二进制)
BestOrNothing_201512 天前
c++·内存管理·智能指针·raii·内存销毁
C++ 智能指针深入:四种智能指针所有权模型、原理与常见陷阱全景解析目录相关内容链接:文章摘要:前言一、从 RAII 到“智能指针家族”的必然分化1.1 RAII 只能保证“释放”,无法表达“关系”
Truman楚门13 天前
linux·内存管理
Page cachePageCache 是一个逻辑上的概念,指定是用于缓存disk数据到内存中的内存页。Page cache的核心结构体是address_space。
极客先躯14 天前
java·大数据·开发语言·内存管理·生产·诊断工具
java的线上诊断工具大全了解Java线上诊断工具,核心是解决生产环境中性能瓶颈、内存泄漏、线程异常、死锁等问题,按「工具类型+核心用途+使用场景」分类梳理,覆盖从轻量命令行到专业可视化工具的全场景,同时标注新手易上手的工具和生产级最佳实践。
驱动探索者14 天前
java·网络·算法·内存管理
[缩略语大全]之[内存管理]篇
JiMoKuangXiangQu18 天前
linux·mmu·内存管理·页表管理
Linux 内存管理:页表管理简析限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。本文以 Linux 4.14.x 在 ARMv7 架构下,分别对两级和三级分页进行讨论。
JiMoKuangXiangQu19 天前
linux·内存管理·tlb·asid
Linux 内存管理:TLB ASID限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。什么是 TLB? TLB 是 Translation Lookaside Buffers 的缩写,MMU 将虚拟地址(VA)翻译为物理地址(PA)时,要经过 页表遍历(page table walk)过程,每访问一级页表就要一次内存访问,相对来说,这个延迟还是相对较大的。为了提高性能,硬件上引入了 TLB cache 缓存,首次访问一个 VA 后,将 MMU 转换的 PA 以对应的 VA 为 tag 缓存到 TLB 缓存,下次再
JiMoKuangXiangQu1 个月前
linux·内存管理·page owner
Linux 内存管理 (7):page owner限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。page owner 用于追踪每个页面的分配者。它可用于调试内存泄漏或查找内存占用者。当发生分配时,分配信息(如调用栈和 page order)会被存储在每个页面的特定存储区中。当需要了解所有页面的状态时,我们可以获取并分析这些信息。
好评1241 个月前
开发语言·c++·内存管理·c/c++
C/C++ 内存管理:摆脱野指针和内存泄漏内存问题是 C/C++ 程序员的“职业噩梦”:写着写着就崩,调半天才发现是少了一行 delete;改个数组大小,realloc 用错又炸了;看到 placement new 直接跳过。其实,大部分坑都来自同一个根源——你没真正搞清“谁在什么地方,谁负责回收”。这篇文章就是一步步把这件事讲透,从内存布局到动态分配,再到 C++ 特有的内存机制,帮你把脑子里的那张“内存地图”补完整。
potato_may1 个月前
c语言·开发语言·数据结构·c++·内存·内存管理
CC++ 内存管理 —— 程序的“五脏六腑”在哪里?💡 你写的每一行代码,背后都有一块内存默默支撑。 学会内存管理,就像学会给程序“体检”和“做手术”! 本章带你搞懂: ✅ 程序运行时,变量到底住在哪里? ✅ malloc/free 和 new/delete 有什么区别? ✅ 为什么 C++ 要发明 new? ✅ 什么是“定位 new”?它有什么用?
JiMoKuangXiangQu1 个月前
linux·内存管理·slab
Linux 内存管理 (6):slub 分配器限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。上一篇 Linux 内存管理 (5):buddy 内存分配简要流程 讲到了 buddy 分配器,既然有了 buddy 分配器,那为什么还需要 slab 分配器?原因是 buddy 分配器以页为单位进行分配,而在实际的应用场景下,有很多小内存的分配需求,通常尺寸都远远小于一个物理内存页面,于是支持小内存分配的 slab 分配器就应运而生。
点云SLAM1 个月前
c++·内存管理·c++高级应用·c++包装器·类型擦除包装器·内存小对象优化
C++包装器之类型擦除(Type Erasure)包装器之小对象优化(SBO, Small Buffer Optimization)示例(5)类型擦除包装器(例如 std::function/std::any)通常在内部对任意类型做 new Model<T>(...) 动态分配并保存基类指针。动态分配的成本(堆分配/释放、缓存抖动)在高频路径(比如每帧创建残差对象、或实时点云处理)会成为瓶颈。
sulikey1 个月前
c语言·c++·内存管理·placement-new
C/C++内存管理深度解析:从内存分布到new/delete底层原理内存管理是C/C++编程的核心技术之一,直接影响程序的性能、稳定性和安全性。与Java、Python等语言的自动垃圾回收机制不同,C/C++赋予开发者直接操控内存的能力,这既带来了灵活性,也埋下了内存泄漏、野指针等隐患。本文将系统梳理C/C++内存布局,深入剖析malloc/free与new/delete的实现机制,帮助开发者建立完整的内存管理知识体系。
奔跑吧邓邓子2 个月前
内存管理·内存泄漏·buffer·理论到实战
解锁Buffer内存管理:从理论到实战的进阶指南在计算机领域,内存管理一直是至关重要的一环,而 Buffer 内存管理更是其中的关键技术,它在数据处理和传输的各个环节都发挥着不可或缺的作用。无论是在操作系统内核、数据库管理系统,还是在各类网络应用程序中,Buffer 内存管理都扮演着优化性能、提升效率的重要角色。接下来,让我们深入了解 Buffer 内存管理的相关知识。
RollingPin2 个月前
ios·内存管理·runtime·autoreleasepool
iOS 内存管理之 autoreleasePool先简单总结下(ps:以下解释略显抽象):这样,就可以实现延迟释放对象的能力;ps:md写的时候,想从苹果开发开源项目平台找源码看,can’t be found了;
JiMoKuangXiangQu2 个月前
linux·内存管理·buddy 分配器
Linux 内存管理 (5):buddy 内存分配简要流程限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。头文件 include/linux/gfp.h 导出了多个接口从 buddy 分配器分配页面: