Да, есть. Вы можете использовать gopsutil пакет:
package main
import (
"fmt"
"github.com/shirou/gopsutil/mem"
)
func main() {
vm, err := mem.VirtualMemory()
if err != nil {
panic(err)
}
fmt.Printf("Total:%d, Available:%d, Used:%d", vm.Total, vm.Available, vm.Used)
}
Есть также много способов, чтобы получить эту информацию, которые являются OS-специфичны. Ни один из них не идеален, но они вам что-то дадут.
Вы также можете использовать Max Memory в качестве переменной конфигурации и использовать: http://godoc.org/runtime#MemStats.
Нет, и это не помогло бы, если бы были. Редизайн вашего решения. – Volker
№. Что доступно для использования, зависит от ядра и может измениться в тот момент, когда вы его запросите. – JimB
Также обратите внимание, что ядра некоторых популярных операционных систем все равно будут относиться к вашему процессу о реальном объеме доступной памяти - это называется [«overcommiting»] (https://www.google.com/search?q=linux + overcommit). – kostix