文章 2024-08-29 来自:开发者社区

Golang内存分析工具gctrace和pprof实战

gctrace gctrace用途主要是用于跟踪GC的不同阶段的耗时与GC前后的内存量对比。 使用的时候仅需在启动的时候添加GODEBUG='gctrace=1'的命令参数即可。如下 ➜ server git:(master) GODEBUG='gctrace=1' go run ./cmd/main.go gc 1 @0.024s 1%: 0.027+1.0+0.022 ms cloc...

Golang内存分析工具gctrace和pprof实战
文章 2024-08-06 来自:开发者社区

解决golang 的内存碎片问题

本文译自Why I encountered Go memory fragmentation? How did I resolve it?,作者通过分析golang的堆管理方式,解决了内存碎片的问题。 背景 我们的团队正在搭建运行一个兼容Prometheus的内存时序数据库,该数据库有一个数据结构,称为"chunk"。每个chunk对应一个唯一键值标签对的4个小时的数据点,如: ...

解决golang 的内存碎片问题
文章 2024-08-05 来自:开发者社区

记一次golang内存泄露

最近在QA环境上验证功能时,发现机器特别卡,查看系统内存,发现可用(available)内存仅剩200多M,通过对进程耗用内存进行排序,发现有一个名为application-manager的容器服务的内存占用达到700多M,该服务使用Gin框架对外提供操作k8s资源的简单功能,解析客户端请求,并将结果返回给客户端。由于是测试环境,访问量极少,但内存一直只增不减,从最初的10M,一直增加到700多....

问答 2024-07-28 来自:开发者社区

grafana可以追溯golang内存泄漏吗?

grafana可以追溯golang内存泄漏吗?

问答 2024-07-28 来自:开发者社区

arms可以追溯golang内存泄漏吗?

arms可以追溯golang内存泄漏吗?

文章 2024-02-25 来自:开发者社区

Golang高性能内存缓存库BigCache设计与分析

项目地址 BigCache 是一个快速,支持并发访问,自淘汰的内存型缓存,可以在存储大量元素时依然保持高性能。BigCache将元素保存在堆上却避免了GC的开销。 背景介绍 BigCache的作者在项目里遇到了如下的需求: 支持http协议支持$10k$RPS ,其中读写各占一半cache缓存至少$10$分钟平均$rt=...

文章 2024-01-12 来自:开发者社区

Golang底层原理剖析之内存逃逸

堆/栈堆(Heap):一般来讲是人为手动进行管理,手动申请、分配、释放。一般所涉及的内存大小并不定,一般会存放较大的对象。另外其分配相对慢,涉及到的指令动作也相对多。栈(Stack):由编译器进行管理,自动申请、分配、释放。一般不会太大,我们常见的函数参数(不同平台允许存放的数量不同),局部变量等等都会存放在栈上。申请到栈内存好处:函数返回直接释放,不会引起垃圾回收,对性能没有影响。申请到堆内存....

文章 2024-01-11 来自:开发者社区

Golang底层原理剖析之内存对齐

为什么要内存对齐假设数据总线64位,每次读取连续的8个字节,所以每次读取的地址一定是8的倍数,如果非要错开一个地址,由于最后一个字节对应的位置与前7个不同,不能在一次读取中读完整,那么就需要分两次读,把两次结果拼接起来拿到所需数据,这必然会影响性能。如何内存对齐所以为保证程序顺利高效的运行,编译器会把各种类型的数据安排到合适的地址并占用合适的长度,这就是内存对齐,每种类型的对齐值就是它的对齐边界....

Golang底层原理剖析之内存对齐
文章 2023-11-17 来自:开发者社区

Golang中的New和Make:内存分配与初始化的区别

摘要:本文将深入探讨Golang中的New和Make函数在内存分配和初始化方面的区别。我们将通过理论阐述和示例代码来解释这两个函数的作用,并帮助读者更好地理解它们在实际编程中的应用。一、引言在Golang中,New和Make是用于内存分配和初始化的重要函数。虽然它们都涉及到内存的分配,但在对象创建和初始化方面存在一些差异。了解这些差异有助于我们更好地选择合适的函数来满足不同的需求。二、理论背景1....

阿里云文档 2023-11-13

如何观测并发现应用程序存在的问题

本文介绍如何综合运用性能监控(火焰图等)工具,观测并发现应用程序存在的问题。

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

相关镜像