[golang] runtime 패키지로 메모리 사용 추적

2024. 11. 17. 23:27·Language/Go

서론

Go 언어는 가비지 컬렉션(GC)을 통해 메모리를 자동으로 관리하지만 실제로 얼마나 많은 메모리를 사용하고 있는지 확인하는 것은 여전히 중요하다. runtime 패키지에는 메모리 사용 상태를 실시간으로 확인할 수 있는 간단한 방법을 제공한다. 이를 통해 메모리 소비량을 모니터링하거나 메모리 사용의 변화를 추적하는 데 유용하다. 이번 글에서는 runtime 패키지를 사용하여 메모리 사용량을 확인하는 방법을 다룬다.

 

1분 간격으로 메모리 모니터링

package main

import (
	"fmt"
	"runtime"
	"time"
)

func main() {
	var memStats runtime.MemStats
	ticker := time.NewTicker(1 * time.Minute)
	defer ticker.Stop()

	for range ticker.C {
		runtime.ReadMemStats(&memStats)
		fmt.Printf("[%s]\n", time.Now().Format(time.DateTime))
		fmt.Printf("TotalAlloc: %d bytes\n", memStats.TotalAlloc)
		fmt.Printf("Sys: %d bytes\n", memStats.Sys)
		fmt.Printf("HeapAlloc: %d bytes\n", memStats.HeapAlloc)
		fmt.Printf("HeapInuse: %d bytes\n", memStats.HeapInuse)
		fmt.Println("-----")
	}
}

이 코드는 1분 간격으로 메모리 사용량을 출력하는 예제이다. runtime.ReadMemStats 메소드는 메모리 사용에 대한 다양한 통계를 제공하여 메모리 사용량을 실시간으로 추적할 수 있다.

 

필드 설명

필드 설명
TotalAlloc 힙에 할당된 메모리의 누적 크기 (객체가 해제되어도 감소하지 않음)
Sys 운영 체제에서 할당된 총 메모리 크기 (물리 메모리와 가상 메모리를 모두 포함)
HeapAlloc 현재 사용 중인 힙 메모리 크기 (할당된 객체와 아직 해제되지 않은 객체 포함)
HeapInuse 실제 사용 중인 힙 메모리 크기 (적어도 하나의 객체가 존재하는 메모리 영역)

 

추가적인 필드나 상세한 설명이 필요하다면 Go 공식 문서에서 runtime.MemStats에 대한 내용을 확인할 수 있다.

'Language > Go' 카테고리의 다른 글

[golang] flag 패키지로 명령줄 옵션 처리하기  (0) 2024.11.19
[golang] Go 언어 철학에서 switch문이 살아 남은 이유  (3) 2024.11.18
[golang] 메모리 지역성을 고려한 2차원 슬라이스 순회  (0) 2024.11.16
[golang] URL 및 쿼리 파라미터 파싱과 수정하기  (0) 2024.11.15
[golang] 텍스트 이미지 생성 및 JPEG 인코딩  (0) 2024.11.14
'Language/Go' 카테고리의 다른 글
  • [golang] flag 패키지로 명령줄 옵션 처리하기
  • [golang] Go 언어 철학에서 switch문이 살아 남은 이유
  • [golang] 메모리 지역성을 고려한 2차원 슬라이스 순회
  • [golang] URL 및 쿼리 파라미터 파싱과 수정하기
在晟
在晟
  • 在晟
    Jae-Sung
    在晟
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • Language (23)
        • Go (23)
      • DBMS (1)
        • MariaDB (1)
      • Notes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Jae-Sung
    • GitHub
  • 인기 글

  • 태그

    unsafe
    fasthttp
    recover
    Runtime
    티스토리챌린지
    interface{}
    오블완
    go
    filepath
    http
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
在晟
[golang] runtime 패키지로 메모리 사용 추적
상단으로

티스토리툴바