Go 语言编译好的exe文件, 没有界面,执行后直接打开cmd运行,发现内存占用100M左右,为了保证程序代码正常吗,随便的一个最简单的代码如下,占用内存还是很大:
Go
package main
import (
"fmt"
)
func main() {
var key int
for {
fmt.Print("input number: ")
fmt.Scanln(&key)
fmt.Println(key)
}
}
最后查找资料,说是设置最大核心数为1,并手动这是垃圾回收,但是没有任何作用:
在 Go 语言中,通常不需要手动设置使用的最大核心数和垃圾回收。Go 运行时会自动管理这些资源,以提供最佳性能。
增加的代码如下:
Go
func init() {
// 设置使用的最大核数
runtime.GOMAXPROCS(1)
// 手动回收垃圾
runtime.GC()
}
最后的解决办法:发现是计算机权限的问题,使用管理员权限运行时,占用内存一下就小了很多
在 Windows 系统上,程序以管理员权限运行和以普通用户权限运行可能会有不同的内存占用情况。这种现象可能是由于以下几个原因:
- 系统资源访问权限:以管理员权限运行的程序可能有更多的权限访问系统资源,从而能够更有效地管理和使用这些资源。
- 虚拟内存管理:Windows 操作系统可能会对不同权限级别的进程进行不同的虚拟内存管理策略。以管理员权限运行的程序可能会有更高的优先级,从而获得更好的内存管理。
- 安全软件干扰:某些安全软件可能会对普通用户权限的进程进行更多的监控和限制,从而导致内存占用增加。以管理员权限运行的程序可能会绕过这些限制。
- 系统缓存和优化:以管理员权限运行的程序可能会触发系统的某些缓存和优化机制,从而减少内存占用。