返回顶部
首页 > 资讯 > 后端开发 > GO >memstat HeapInuse 和 TotalAlloc 需要解释
  • 861
分享到

memstat HeapInuse 和 TotalAlloc 需要解释

2024-04-04 23:04:04 861人浏览 八月长安
摘要

本篇文章向大家介绍《memstat Heapinuse 和 TotalAlloc 需要解释》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。问题内容我想要转储 golang memstat

本篇文章向大家介绍《memstat Heapinuse 和 TotalAlloc 需要解释》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我想要转储 golang memstat

package main

import (
    "fmt"
    "GitHub.com/dustin/Go-humanize"
    "runtime"
    "time"
)

func main() {
    for {
        var mem = new(runtime.memstats)
        runtime.readmemstats(mem)
        fmt.println("heapinuse:", humanize.bytes(mem.heapinuse), "totalalloc:", humanize.bytes(mem.totalalloc))

        allocate()
        time.sleep(100 * time.millisecond)
    }

}

func allocate() {
    //  0.25mb
    _ = make([]byte, int((1<<20)*0.25))
}

当我转储内存信息时

HeapInuse: 418 kB TotalAlloc: 154 kB ? why  HeapInuse bigger than TotalAlloc
HeapInuse: 688 kB TotalAlloc: 417 kB
HeapInuse: 950 kB TotalAlloc: 680 kB
HeapInuse: 1.2 MB TotalAlloc: 942 kB
HeapInuse: 1.5 MB TotalAlloc: 1.2 MB
HeapInuse: 1.8 MB TotalAlloc: 1.5 MB
HeapInuse: 2.0 MB TotalAlloc: 1.7 MB
HeapInuse: 2.3 MB TotalAlloc: 2.0 MB
HeapInuse: 2.5 MB TotalAlloc: 2.3 MB
HeapInuse: 2.8 MB TotalAlloc: 2.5 MB
HeapInuse: 3.1 MB TotalAlloc: 2.8 MB
HeapInuse: 3.3 MB TotalAlloc: 3.0 MB
HeapInuse: 3.6 MB TotalAlloc: 3.3 MB
HeapInuse: 3.9 MB TotalAlloc: 3.6 MB
HeapInuse: 4.1 MB TotalAlloc: 3.8 MB
HeapInuse: 4.4 MB TotalAlloc: 4.1 MB
HeapInuse: 410 kB TotalAlloc: 4.4 MB

我发现 heapinuse 比 totalalloc 大?但我不明白原因?我认为totalalloc应该包括heapinuse。


正确答案


我们来看看下面的官方评论:

总分配

// totalalloc is cumulative bytes allocated for heap objects.
//
// totalalloc increases as heap objects are allocated, but
// unlike alloc and heapalloc, it does not decrease when
// objects are freed.
totalalloc uint64

heapinuse

// heapinuse is bytes in in-use spans.
//
// in-use spans have at least one object in them. these spans
// can only be used for other objects of roughly the same
// size.
//
// heapinuse minus heapalloc estimates the amount of memory
// that has been dedicated to particular size classes, but is
// not currently being used. this is an upper bound on
// fragmentation, but in general this memory can be reused
// efficiently.
heapinuse uint64
  • heapinuse 是(从操作系统)分配的内存,不能被对象使用
  • totalalloc是为堆对象分配的内存

让我们尝试一下heapalloc

// heapalloc is bytes of allocated heap objects.
//
// "allocated" heap objects include all reachable objects, as
// well as unreachable objects that the garbage collector has
// not yet freed. specifically, heapalloc increases as heap
// objects are allocated and decreases as the heap is swept
// and unreachable objects are freed. sweeping occurs
// incrementally between GC cycles, so these two processes
// occur simultaneously, and as a result heapalloc tends to
// change smoothly (in contrast with the sawtooth that is
// typical of stop-the-world garbage collectors).
heapalloc uint64

结果

HeapAlloc: 148 kB HeapInuse: 401 kB TotalAlloc: 148 kB
HeapAlloc: 412 kB HeapInuse: 664 kB TotalAlloc: 412 kB
HeapAlloc: 675 kB HeapInuse: 926 kB TotalAlloc: 675 kB
HeapAlloc: 937 kB HeapInuse: 1.2 MB TotalAlloc: 937 kB
HeapAlloc: 1.2 MB HeapInuse: 1.5 MB TotalAlloc: 1.2 MB
HeapAlloc: 1.5 MB HeapInuse: 1.7 MB TotalAlloc: 1.5 MB
HeapAlloc: 1.7 MB HeapInuse: 2.0 MB TotalAlloc: 1.7 MB
HeapAlloc: 2.0 MB HeapInuse: 2.2 MB TotalAlloc: 2.0 MB
HeapAlloc: 2.2 MB HeapInuse: 2.5 MB TotalAlloc: 2.2 MB
HeapAlloc: 2.5 MB HeapInuse: 2.8 MB TotalAlloc: 2.5 MB
HeapAlloc: 2.8 MB HeapInuse: 3.0 MB TotalAlloc: 2.8 MB
HeapAlloc: 3.0 MB HeapInuse: 3.3 MB TotalAlloc: 3.0 MB
HeapAlloc: 3.3 MB HeapInuse: 3.6 MB TotalAlloc: 3.3 MB
HeapAlloc: 3.6 MB HeapInuse: 3.8 MB TotalAlloc: 3.6 MB
HeapAlloc: 3.8 MB HeapInuse: 4.1 MB TotalAlloc: 3.8 MB
HeapAlloc: 4.1 MB HeapInuse: 4.3 MB TotalAlloc: 4.1 MB
HeapAlloc: 134 kB HeapInuse: 393 kB TotalAlloc: 4.4 MB
HeapAlloc: 398 kB HeapInuse: 664 kB TotalAlloc: 4.6 MB
HeapAlloc: 660 kB HeapInuse: 926 kB TotalAlloc: 4.9 MB
HeapAlloc: 923 kB HeapInuse: 1.2 MB TotalAlloc: 5.1 MB
HeapAlloc: 1.2 MB HeapInuse: 1.4 MB TotalAlloc: 5.4 MB
HeapAlloc: 1.4 MB HeapInuse: 1.7 MB TotalAlloc: 5.7 MB
HeapAlloc: 1.7 MB HeapInuse: 2.0 MB TotalAlloc: 5.9 MB
HeapAlloc: 2.0 MB HeapInuse: 2.2 MB TotalAlloc: 6.2 MB
HeapAlloc: 2.2 MB HeapInuse: 2.5 MB TotalAlloc: 6.5 MB
HeapAlloc: 2.5 MB HeapInuse: 2.8 MB TotalAlloc: 6.7 MB
HeapAlloc: 2.8 MB HeapInuse: 3.0 MB TotalAlloc: 7.0 MB
HeapAlloc: 3.0 MB HeapInuse: 3.3 MB TotalAlloc: 7.2 MB
HeapAlloc: 3.3 MB HeapInuse: 3.5 MB TotalAlloc: 7.5 MB
HeapAlloc: 3.5 MB HeapInuse: 3.8 MB TotalAlloc: 7.8 MB
HeapAlloc: 3.8 MB HeapInuse: 4.1 MB TotalAlloc: 8.0 MB
HeapAlloc: 4.1 MB HeapInuse: 4.3 MB TotalAlloc: 8.3 MB
HeapAlloc: 136 kB HeapInuse: 401 kB TotalAlloc: 8.6 MB
HeapAlloc: 400 kB HeapInuse: 664 kB TotalAlloc: 8.8 MB
HeapAlloc: 662 kB HeapInuse: 926 kB TotalAlloc: 9.1 MB
HeapAlloc: 924 kB HeapInuse: 1.2 MB TotalAlloc: 9.3 MB
HeapAlloc: 1.2 MB HeapInuse: 1.4 MB TotalAlloc: 9.6 MB
HeapAlloc: 1.4 MB HeapInuse: 1.7 MB TotalAlloc: 9.9 MB
HeapAlloc: 1.7 MB HeapInuse: 2.0 MB TotalAlloc: 10 MB
HeapAlloc: 2.0 MB HeapInuse: 2.2 MB TotalAlloc: 10 MB
HeapAlloc: 2.2 MB HeapInuse: 2.5 MB TotalAlloc: 11 MB
HeapAlloc: 2.5 MB HeapInuse: 2.8 MB TotalAlloc: 11 MB
HeapAlloc: 2.8 MB HeapInuse: 3.0 MB TotalAlloc: 11 MB
HeapAlloc: 3.0 MB HeapInuse: 3.3 MB TotalAlloc: 11 MB
HeapAlloc: 3.3 MB HeapInuse: 3.5 MB TotalAlloc: 12 MB
HeapAlloc: 3.5 MB HeapInuse: 3.8 MB TotalAlloc: 12 MB
HeapAlloc: 3.8 MB HeapInuse: 4.1 MB TotalAlloc: 12 MB
HeapAlloc: 4.1 MB HeapInuse: 4.3 MB TotalAlloc: 12 MB
HeapAlloc: 136 kB HeapInuse: 401 kB TotalAlloc: 13 MB
HeapAlloc: 400 kB HeapInuse: 664 kB TotalAlloc: 13 MB
HeapAlloc: 663 kB HeapInuse: 926 kB TotalAlloc: 13 MB
HeapAlloc: 925 kB HeapInuse: 1.2 MB TotalAlloc: 14 MB
HeapAlloc: 1.2 MB HeapInuse: 1.4 MB TotalAlloc: 14 MB
HeapAlloc: 1.4 MB HeapInuse: 1.7 MB TotalAlloc: 14 MB

今天关于《memstat HeapInuse 和 TotalAlloc 需要解释》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: memstat HeapInuse 和 TotalAlloc 需要解释

本文链接: https://lsjlt.com/news/596843.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • memstat HeapInuse 和 TotalAlloc 需要解释
    本篇文章向大家介绍《memstat HeapInuse 和 TotalAlloc 需要解释》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。问题内容我想要转储 golang memstat ...
    99+
    2024-04-04
  • golang需要解释器么
    golang不需要解释器,它是一种编译型语言,意味着源代码在执行之前需要先编译成机器码,以获得更高的执行性能和更好的内存管理能力,与解释型语言相比,这种特性使得golang具有更好的性能和更高的执行效率。本文操作环境:Windows10系统...
    99+
    2023-07-19
  • Golang 函数文档和注释中有什么需要注意的要点?
    函数文档和注释的关键要点:函数文档包括:函数签名、简洁描述、输入参数、返回值、错误处理、示例。注释包括:行注释、块注释、成员变量注释、常量注释。清晰准确的文档和注释可提升 go 代码的可...
    99+
    2024-04-18
    函数文档 注释 golang 代码可读性
  • 你真的需要使用二维码吗?Go、Bash和Django的专业人士解释。
    二维码在我们的日常生活中已经非常常见了。无论是在支付宝、微信、银行卡还是在门票、优惠券、广告等方面,二维码都有着广泛的应用。那么,作为一名开发者,我们真的需要使用二维码吗?下面,我们请来了Go、Bash和Django的专业人士来解释这个问题...
    99+
    2023-07-23
    bash django 二维码
  • 你需要了解的 Go 函数和 JavaScript 库
    随着技术的发展,越来越多的编程语言和库被开发出来。其中,Go 和 JavaScript 是两个非常流行的编程语言,并且它们都有许多常用的函数和库。本文将介绍一些,帮助你更好地理解这两个编程语言。 一、Go 函数 strings.Conta...
    99+
    2023-08-22
    npm 函数 javascript
  • 重要性和误区:详解Golang中注释的作用
    Golang注释:注释的重要性及常见误区解析 在日常的软件开发中,注释作为一种重要的文档形式,起着记录、解释、说明代码的作用。对于Golang这样一门简洁明了的语言来说,注释同样扮演着...
    99+
    2024-02-25
  • Java和Laravel框架:您需要了解的一切
    Java和Laravel框架是目前非常流行的两种开发工具,它们都具有各自独特的优势和应用场景。本文将介绍Java和Laravel框架的基本概念、特点、优势和应用场景,以及如何使用Java和Laravel框架进行开发。 一、Java框架 1...
    99+
    2023-11-07
    laravel 教程 框架
  • Laravel开发者需要了解的Java和Bash技术。
    Laravel开发者需要了解的Java和Bash技术 Laravel是一款非常流行的PHP框架,它被广泛应用于Web应用程序的开发。然而,Laravel开发者需要了解一些其他技术,以便更好地完成他们的工作。本文将介绍Laravel开发者需要...
    99+
    2023-06-02
    bash 开发技术 laravel
  • 为什么Java工程师需要了解Git和LeetCode?
    随着互联网技术的不断发展,Java工程师已经成为了现代IT行业中最热门的职业之一。作为一名Java工程师,不仅需要掌握Java语言的基础知识,还需要掌握一些相关的技术工具,例如Git和LeetCode。那么,为什么Java工程师需要了解Gi...
    99+
    2023-10-30
    git leetcode 接口
  • 您需要了解的Python和Bash日志同步技巧。
    Python和Bash是两种常用的编程语言,它们都有着强大的日志处理能力。在实际的开发过程中,我们常常需要将不同系统或不同平台的日志进行同步,以便更好地进行数据分析和故障排查。本文将介绍Python和Bash两种语言的日志同步技巧,希望对大...
    99+
    2023-07-27
    bash 同步 日志
  • Java 容器和 NPM 框架:你需要了解的一切。
    Java 容器和 NPM 框架:你需要了解的一切 在现代软件开发中,容器和框架是必不可少的工具。它们可以帮助开发人员更快地编写、测试和部署应用程序,提高生产力和可靠性。本文将介绍两种流行的工具:Java 容器和 NPM 框架。 Java 容...
    99+
    2023-07-08
    容器 npm 框架
  • Java开发者需要了解的Apache和NumPy的优点和缺点。
    Java开发者需要了解的Apache和NumPy的优点和缺点 Apache和NumPy是两个广泛使用的开源项目,它们在不同的领域中都有着重要的作用。Apache是一个Java开发的Web应用框架,而NumPy则是一个用于科学计算的Pytho...
    99+
    2023-11-14
    apache numy load
  • 缓存是Go、Django和Bash开发者需要了解的重要概念吗?
    随着互联网技术的发展,数据量和访问量不断增加,如何提高系统的响应速度和性能成为了开发者们面临的重要问题。缓存技术是一种被广泛使用的提升系统性能的方法之一。在本文中,我们将探讨缓存的概念、原理和应用,并且演示在Go、Django和Bash开...
    99+
    2023-10-26
    django bash 缓存
  • ASP、实时、Django 和 JavaScript:您需要了解的所有内容!
    随着互联网的不断发展,Web 开发也在不断地更新迭代,新的技术层出不穷。ASP、实时、Django 和 JavaScript 这四个技术在 Web 开发中非常常见,这篇文章将会为您详细介绍这些技术的特点和应用场景。 ASP ASP(Act...
    99+
    2023-09-17
    实时 django javascript
  • ASP和bash编程是否需要对关键字的理解?
    ASP和bash编程是两种不同的编程语言,虽然它们的用途和特点各不相同,但是它们都需要对关键字的理解。在本文中,我们将深入探讨这个问题,并且通过演示代码来更好地理解。 首先,让我们来看一下ASP编程语言。ASP(Active Server ...
    99+
    2023-10-16
    bash 关键字 自然语言处理
  • Java 开发人员需要了解哪些 Windows 和 Unix 命令?
    Java 是一种跨平台的编程语言,可以在 Windows 和 Unix 等各种操作系统上运行。在 Java 开发中,了解一些 Windows 和 Unix 命令可以帮助开发人员更好地管理和操作系统,提高开发效率。本文将介绍一些 Java ...
    99+
    2023-08-21
    leetcode windows unix
  • 您需要了解的Go语言和NumPy对象的教程
    Go语言和NumPy对象是现代编程中最常用的两种技术。Go语言是一种静态类型的编程语言,它的主要特点是简单、快速、安全、并发。而NumPy对象是一种Python库,它提供了高效的数学计算和科学计算支持。在本篇文章中,我们将为您介绍Go语言和...
    99+
    2023-08-28
    numpy 对象 教程
  • 缓存是Django、Go和Bash都需要了解的东西吗?
    缓存是一个广泛应用于计算机系统中的技术,它通过将计算机系统中的数据存储在内存或其他高速存储设备中,以加快数据的访问速度。在Django、Go和Bash这些编程语言中,缓存也是一个非常重要的概念。本文将介绍缓存的基本概念以及在Django、...
    99+
    2023-10-26
    django bash 缓存
  • 您需要了解的关于PHP异步编程和Spring API的重要信息。
    PHP异步编程和Spring API是两个非常重要的主题,尤其是在现代Web应用程序的开发中。在本文中,我们将探讨这两个主题,并提供一些代码示例,帮助您更好地了解这些概念。 PHP异步编程 PHP是一种流行的Web开发语言,而异步编程是一种...
    99+
    2023-10-04
    异步编程 spring api
  • Python 开发者需要了解 Git 和 HTTP 路径的关系吗?
    随着软件开发行业的不断发展,越来越多的 Python 开发者开始注意到 Git 和 HTTP 路径的关系。在本文中,我们将深入探讨 Git 和 HTTP 路径的关系以及为什么 Python 开发者需要了解它们。 Git 和 HTTP 路径...
    99+
    2023-09-20
    git http path
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作