This product is not supported for your selected Datadog site. ().
이 페이지는 아직 영어로 제공되지 않습니다. 번역 작업 중입니다. 현재 번역 프로젝트에 대한 질문이나 피드백이 있으신 경우 언제든지 연락주시기 바랍니다.
Metadata
ID:go-best-practices/avoid-call-to-gc
Language: Go
Severity: Info
Category: Best Practices
Description
In Go, it is generally recommended to avoid using runtime.GC() and prevent direct calls to the garbage collector (GC). Here are a few reasons why:
Efficiency: Go’s garbage collector is designed to automatically manage memory and determine when to run the garbage collection process based on the needs of the program. The Go runtime is optimized to efficiently handle garbage collection without manual intervention. Directly calling runtime.GC() can disrupt the optimized garbage collection process and potentially lead to performance issues.
Unpredictable Behavior: Calling the GC directly can introduce unpredictable behavior and potentially cause unintended consequences. The Go runtime employs a sophisticated garbage collector that operates based on heuristics and runtime conditions. Manually triggering the GC may interfere with the GC’s ability to perform effective memory management and may not yield the expected results.
Code Readability and Simplicity: Directly calling the GC makes the code more complex and harder to understand. It can obscure the underlying memory management and make the code less maintainable. The Go language promotes writing clean, readable code, and relying on the automatic garbage collector helps maintain this simplicity and readability.
Focus on Algorithmic Optimization: Instead of manually calling the GC, it is generally better to focus on algorithmic optimization and writing efficient code. Optimizing data structures, reducing unnecessary allocations, and managing resources effectively can have a more significant impact on the performance of a Go program compared to manual GC calls.
In most cases, it is best to rely on Go’s automatic garbage collector and let it handle memory management. Trusting the runtime’s automatic GC ensures efficient memory usage and allows developers to focus on writing clear, maintainable code.
Non-Compliant Code Examples
funcmain(){runtime.GC()}
원활한 통합. Datadog Code Security를 경험해 보세요
Datadog Code Security
이 규칙을 사용해 Datadog Code Security로 코드를 분석하세요
규칙 사용 방법
1
2
rulesets:- go-best-practices # Rules to enforce Go best practices.
리포지토리 루트에 위의 내용을 포함하는 static-analysis.datadog.yml을 만듭니다
무료 IDE 플러그인을 사용하거나 CI 파이프라인에 Code Security 검사를 추가합니다