首页 > 其他分享 >Golang runtime包代码示例

Golang runtime包代码示例

时间:2023-12-07 10:05:21浏览次数:24  
标签:memStats 示例 fmt goroutine Golang 获取 Println runtime


在 Go 中,runtime 包提供了与运行时系统(runtime system)交互的功能。这个包包含了一些底层的运行时操作,例如内存管理、协程管理、垃圾回收等。以下是一个简单的示例代码,展示了 runtime 包的一些常见用法:

package main

import (
	"fmt"
	"runtime"
)

func main() {
	// 获取 Go 程序运行时的操作系统名称和架构
	fmt.Println("GOOS:", runtime.GOOS)
	fmt.Println("GOARCH:", runtime.GOARCH)

	// 设置 goroutine 的最大并发数
	maxProcs := runtime.GOMAXPROCS(0)
	fmt.Println("Max goroutines:", maxProcs)

	// 获取当前 goroutine 的数量
	numGoroutines := runtime.NumGoroutine()
	fmt.Println("Number of goroutines:", numGoroutines)

	// 强制进行垃圾回收
	runtime.GC()

	// 获取堆上分配的对象数量和字节数
	var memStats runtime.MemStats
	runtime.ReadMemStats(&memStats)
	fmt.Println("Allocated objects:", memStats.Alloc)
	fmt.Println("Allocated bytes:", memStats.TotalAlloc)
}

在这个示例中,我们首先使用 runtime.GOOSruntime.GOARCH 分别获取当前运行程序的操作系统名称和架构。然后,使用 runtime.GOMAXPROCS() 函数获取当前设置的 goroutine 的最大并发数,并打印出来。

接下来,使用 runtime.NumGoroutine() 函数获取当前 goroutine 的数量,并打印出来。

然后,使用 runtime.GC() 强制进行垃圾回收。

最后,使用 runtime.ReadMemStats() 函数获取运行时的内存统计信息,并打印出堆上已分配的对象数量和字节数。

需要注意的是,runtime 包提供了一些与运行时系统交互的底层功能,但这些功能通常用于特定的情况,比如性能优化、调试和系统级编程等。在一般的应用程序中,很少需要直接使用 runtime 包。一般情况下,应该遵循 Go 语言的高级抽象和标准库,以编写可读性高、可维护性好的代码。


标签:memStats,示例,fmt,goroutine,Golang,获取,Println,runtime
From: https://blog.51cto.com/zhangxueliang/8718158

相关文章

  • Golang GC是标记清除GC算法吗?与复制算法、标记整理算法的区别
    Golang(Go语言)使用的是标记清除(MarkandSweep)的垃圾回收(GC)算法。下面是标记清除算法与复制算法以及标记整理算法之间的区别和优势:标记清除算法(MarkandSweep):工作原理:标记清除算法分为标记和清除两个阶段。首先,从根对象(如全局变量、堆栈中的对象)开始,标记所有可以访问到的对象。然后......
  • Golang标准库:非类型安全操作(Arbitrary 类型 Pointer 类型 Sizeof 函数 Offsetof 函数)
    unsafe库徘徊在“类型安全”边缘,由于它们绕过了Golang的内存安全原则,一般被认为使用该库是不安全的。但是,在许多情况下,unsafe库的作用又是不可替代的,灵活地使用它们可以实现对内存的直接读写操作。在reflect库、syscall库以及其他许多需要操作内存的开源项目中都有对它的引用。un......
  • 通过PowerShellPlus示例脚本学习PowerShell之-通过SMO获取SQLServer数据库
    ##=====================================================================##Title:Get-MSSQL-DB-UsingSMO##Description:ShowalldatabasesusingSMOforagivenserverinstance##Author:Idera##Date:1/28/2008##Input:-s......
  • golang的try catch 方式
    列子如下:main.go 1try.Catch(func(errerror){2//异常处理3fmt.Println(err)4}).Then(func()error{5//执行代码16//...78//如果有异常即抛出异常9returnnil10}).Then(func()error{11//执行代码212/......
  • cerbos golang 内部policy check 处理简单说明
    主要是想尝试实现一个rust的check方法,所以先研究下golang的内部实现CheckResourcesfunc(cs*CerbosService)CheckResources(ctxcontext.Context,req*requestv1.CheckResourcesRequest)(*responsev1.CheckResourcesResponse,error){log:=logging.......
  • jsmn示例使用
    前言jsmn是一款超级精简的c语言json解释器,用于嵌入式进行json数据解析特别友好。官方库:https://github.com/zserge/jsmn/tree/masterjsmn(pronouncedlike'jasmine')isaminimalisticJSONparserinC.Itcanbeeasilyintegratedintoresource-limitedorembedde......
  • golang的蓝牙通信库
    github.com/tinygo-org/bluetooth:TinyGo是一个Go语言编译器,它专注于微控制器和小型计算机系统。这个库是TinyGo项目的一部分,用于支持蓝牙低功耗(BLE)设备。github.com/go-ble/ble:这是一个轻量级的Golang库,旨在简化与蓝牙低功耗设备的交互。它支持多种平台,并提供了一种简单的A......
  • systemd使用示例
    [Unit]Description=monitorsg_ai_framework_boxAfter=network.target[Service]User=rootType=forkingExecStart=/data/script/run/start.shExecStop=/data/script/run/stop.shPrivateTmp=trueRestart=always[Install]WantedBy=multi-user.target 1.启动nfs服务systemctl s......
  • golang之媒体处理
    [视频]获取视频封面图:1)如果是使用oss的话,可以添加指定的后缀生成指定图片  获取视频长度:1)若是oss上的视频,则可以使用阿里云的IMM中的提取视频信息的服务注意这里获取需要使用到签名之后获取对应的数据 这里使用基于阿里云oss包: github.com/aliyun/aliyun-o......
  • Java 内存分析工具 Arthas 介绍与示例讲解
    目录一、概述二、Arthas安装三、Arthas主要组成结构四、Arthas通信主要流程五、Arthas快速入门讲解1)启动Arthas2)基础命令介绍3)jvm相关1、dashboard(实时数据面板)2、Thread(线程相关堆栈信息)3、jvm(查看当前JVM的信息)4、memory(查看JVM的内存信息)5、sysprop(查看/修改属性)6、s......