我正在尝试使用 Golang 的 win64api 库(https://github.com/kumako/go-win64api) 来控制 windows 防火墙。
它运行良好,但它不会释放内存。例如,循环运行函数会导致内存使用量不断增加。
看库,好像这个话题已经处理好了(firewallAPIRelease,firewallRulesEnumRealease之类的函数)。
有人知道为什么会这样吗?
这是导致问题的代码:
package main
import (
"fmt"
winapi "github.com/kumako/go-win64api"
"time"
)
func main(){
var first string
for 1>0 {
fmt.Scanln(&first)
if first == "run"{
firewallTest()
}
}
}
func firewallTest(){
//get the list of the rules
ruleList, _ := winapi.FirewallRulesGet()
//delete them one by one using their names
for _, eachRule := range ruleList {
ruleName := eachRule.Name
if ruleName != ""{
winapi.FirewallRuleDelete(ruleName)
}
}
//wait for 30 second
time.Sleep(30 * time.Second)
//add them back, one by one, from the list
for _, eachRule := range ruleList{
winapi.FirewallRuleAddAdvanced(eachRule)
}
}