首页
文章列表
标签墙
返回找工具啦
内存分配
共 11 篇文章
Go语言strings.Builder的WriteString比+拼接快的原因
2026-05-15 12:15:34
Go语言strings.Builder的WriteString比+拼接快的原因 在Go语言中,字符串是不可变的数据类型。理解这一特性是掌握字符串拼接性能差异的关键。使用 + 操作符进行拼接看似简单,但在循环或高频场景下会导致严重的性能问题,而 strings.Builder 的 WriteStrin
Go语言
字符串拼接
性能优化
35
0
C++ std::shared_ptr的make_shared与构造函数创建的性能对比
2026-05-04 09:16:15
C++ std::sharedptr的makeshared与构造函数创建的性能对比 在C++开发中,使用智能指针是管理动态内存的标准做法。然而,创建 std::sharedptr 主要有两种方式:直接使用 new 配合构造函数,或者使用 std::makeshared 工厂函数。这两种方式在性能表现
C++
智能指针
性能对比
52
0
Go语言切片扩容时的容量计算与内存重新分配
2026-04-30 00:22:40
Go语言切片扩容时的容量计算与内存重新分配 Go语言中的切片是对数组的抽象,使用起来非常灵活。但在使用 append 向切片追加元素时,切片的长度和容量会发生变化。如果不理解其背后的扩容机制,编写高性能程序时容易造成意外的内存浪费或性能瓶颈。 以下内容将深入剖析 Go 语言切片扩容时的容量计算规则及
Go语言
切片扩容
容量计算
41
0
Go语言逃逸分析:变量何时分配在堆上而非栈上
2026-04-25 00:19:27
Go语言逃逸分析:变量何时分配在堆上而非栈上 理解 Go 语言的逃逸分析是编写高性能代码的关键。Go 编译器会自动决定变量是分配在快速的栈上,还是需要垃圾回收(GC)管理的堆上。掌握这一机制,能有效减少 GC 压力,提升程序运行速度。 1. 理解核心机制:栈与堆的区别 在深入分析之前,需明确变量存储
Go语言
逃逸分析
内存分配
53
0
C++智能指针make_shared比直接new+shared_ptr好在哪
2026-04-24 23:28:22
C++智能指针makeshared比直接new+sharedptr好在哪 C++11 引入了智能指针来管理动态内存,std::sharedptr 是最常用的一种。但在创建 std::sharedptr 时,直接使用 new 和使用 std::makeshared 存在显著差异。以下是详细的对比分析与
C++
智能指针
内存管理
58
0
Go 内存管理:GC 机制与内存分配
2026-04-18 23:26:15
Go 内存管理:GC 机制与内存分配 Go 语言内置了自动内存管理机制,核心在于高效的内存分配器和并发垃圾回收器(GC)。掌握其工作原理是编写高性能 Go 程序的关键。 第一阶段:内存分配机制 Go 的内存分配器基于 TCMalloc 架构,旨在解决多线程下的内存锁竞争问题。其核心思想是将内存切分为
Go语言
内存管理
GC机制
71
0
Java 堆外内存DirectBuffer的分配与回收
2026-04-14 06:18:01
Java 堆外内存 DirectBuffer 的分配与回收 Java 堆外内存(OffHeap Memory)是指直接在 JVM 堆之外分配的内存,主要由操作系统管理。使用 DirectBuffer(特别是 DirectByteBuffer)操作堆外内存,可以避免数据在 Java 堆和本地堆之间复制
Java
堆外内存
DirectBuffer
78
0
Java NIO:ByteBuffer 与 Channel 的使用
2026-04-12 08:26:02
Java NIO:ByteBuffer 与 Channel 的使用 ByteBuffer 是 Java NIO 中用于数据交互的核心容器,而 Channel 则是数据传输的通道。两者的配合是实现高效 I/O 操作的基础。本指南将通过具体步骤,演示如何利用 ByteBuffer 进行数据的读写与传输。
JavaNIO
Channel
Buffer
45
0
Go 性能问题:切片扩容导致的内存分配
2026-04-04 02:47:05
Go 性能问题:切片扩容导致的内存分配 Go 语言中的切片(slice)是一个灵活且常用的数据结构,但它在自动扩容时可能引发不必要的内存分配,进而影响程序性能。如果你频繁向切片追加元素而未预设容量,程序会反复申请新内存、复制旧数据,造成 CPU 和内存资源浪费。本文将手把手教你识别、分析并解决这类性
Go性能优化
切片扩容
内存分配
68
0
Go语言 逃逸分析决定变量分配在堆还是栈
2026-04-03 09:01:24
Go语言 逃逸分析决定变量分配在堆还是栈 Go语言的内存分配由编译器自动管理,开发者无需手动指定变量应分配在堆(heap)还是栈(stack)。这一决策过程称为“逃逸分析”(escape analysis)。理解逃逸分析机制,有助于写出更高效、内存友好的代码。 什么是逃逸分析? 逃逸分析是编译器在编
Go语言
逃逸分析
内存分配
64
0
C# 类型系统:值类型与引用类型的区别
2026-04-02 03:41:23
C 类型系统:值类型与引用类型的区别 C 中的变量分为两大类:值类型(Value Types)和引用类型(Reference Types)。它们在内存分配、赋值行为、比较方式等方面有本质区别。正确理解这两者的差异,能避免常见错误,写出更高效、可靠的代码。 1. 基本概念区分 值类型直接存储数据本身,
C#类型系统
值类型
引用类型
63
0