Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- wget
- 전역설치
- 블록체인
- node.js 교과서 따라하기
- 머클루트
- 시퀄라이즈
- immer
- MariaDB
- 노드
- 솔리디티
- 쉘스크립트
- wsl
- centos
- 우분투
- 이더리움
- 리액트를 다루는 기술
- 깃허브
- 자바스크립트
- 리눅스
- 환경변수
- npm
- 머클트리
- 라우터
- Sequelize
- 변수
- 리액트
- 벨로포터
- Docker
- 설치
- 일반유저
Archives
- Today
- Total
코드코코
[Garbage collector] 가비지컬렉터 , 메모리 정리 본문
package main
import "fmt"
func add() *int {
//garbage collector : 불필요한 메모리를 정리해 줌.
//메모리가 정리되는 기준점 : 메모리(변수)가 필요 없어지는 순간
//즉, 'reference count = 0' 이 되는 순간 GC가 지움.
//reference count
var a int //1
var p *int
a = 3
p = &a //2
fmt.Println(*p)
//1.리턴되는 순간 메모리가 사라지는 것이아니라,
return p
}
func main() {
//2. 실행이 끝나는 순간 메모리가 정리됨.
v := add()
fmt.Println(v)
}
Garbage Collector : 불필요한 메모리를 자동으로 정리해 줌.
GC의 유무에 따라
managed language : JAVA, GO
unmanaged language : C , C++
C언어에서 GC
스택 메모리
- 변수는 스택메모리
- 변수의 생명주기에 맞는 스코프 범위를 벗어나면 메모리는 무조건 사라져야 함.
힙 메모리
- 프로그래머가 힙 메모리 할당 가능
- 할당방법은 malloc(사이즈)이용
- 그리고 사용하고 나서는 free로 수동으로 메모리 삭제하여 정리하여야 함.
메모리 관련 버그들
- memory leak: 흔히들 하는 실수.
- dangiling : 사라진 메모리를 참조하는 경우.
GC 특징
- 전수조사
- 하는 일이 많다.
- 메모리를 많이 사용한다.
- 속도가 느림
- 과거는 GC작동시 2~3초 가량 멈추는 경우도 있었지만, 멀티쓰레드의 발전으로 보완됨.
- GC가 무조건 memory leak를 막아주는 것은 아니다.
GO에서 GC
- 외딴섬 : reference count가 0 이 아님에도 외부에서 아무도 참조하지 않는 경우,
> a->b->c->a 서로를 카운터하지만, 외부에서는 아무도 a,b,c를 가르키는 것이 없다.
> memory leak에 해당하며, GC의 관리대상
'기록 > 정리' 카테고리의 다른 글
[MariaDB] 계정 생성 및 권한 부여 , DB 생성 , Table 생성 , Data 입력 (0) | 2021.12.20 |
---|---|
[깃허브] git 명령어를 사용하여 github 이용하기 (0) | 2021.12.17 |
[리액트] immer로 불변성 유지 작업 (0) | 2021.11.02 |
[리액트] 컴포넌트 리렌더링 최적화 (0) | 2021.11.02 |
[리액트] 라이프사이클 메서드 (0) | 2021.10.31 |