디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[일반] 고도 C# GC 폭탄 조심해라

ㅇㅇ(218.144) 2024.02.02 00:54:44
조회 514 추천 4 댓글 12
														

알 수 없는 메모리 누수 때문에 엄청 고생했는데 오늘 해결해서 원인과 해결법 공유 하려고 함 나처럼 고생하지 마라고



내 게임은 뱀서라이크처럼 플레이어가 수많은 적들 잡는 게임인데 적들 생성 파괴가 매우 빠르기 때문에 씬 트리에 미리 만들어 놓고 껐다 켰다만 하고 있었음

근데 적들이 화면에 많이 있을수록 수시로 끊기는게 점점 심해짐



7cf3c028e2f206a26d81f6e045807d6b

수많은 프로파일링 끝에 찾은 원인은 GC 작동 때문이었는데 거의 모든 객체를 풀링해놔서 저렇게 GC 먹이로 줄게 없었음



7ff3c028e2f206a26d81f6e240807069

좀 더 심층적으로 프로파일링 해보면 CSharpInstanceBridge.Set 하는게 문제인걸 알수있는데 저걸 엔진 함수까지 백트레이스 해보면



7ef3c028e2f206a26d81f6e643857c69

애니메이션믹서가 문제임을 알 수 있음 정확한 호출 지점은 모르겠지만



79f3c028e2f206a26d81f6ec4488706d

_blend_process 함수 내부에서 프로퍼티 트랙을 처리하는 부분이고 문제의 코드는 t->object->set_indexed(t->subpath, value) 이거임

엔진 코드를 자세히 살펴본건 아니라서 당장은 추측인데 저 object가 엔진 내부 노드 인스턴스고 해당 노드에 스크립트도 달려 있으면 그 스크립트 인스턴스에도 똑같이 값을 set 하는걸로 보임


근데 왜 이게 문제냐면 고도 엔진이 C# 코드와 작동하는 방식 때문인데 통신을 위한 바인딩 레이어가 GDScript 기준으로 만들어져서 솔직히 매우 비효율적임 특히나 힙 객체를 생성하는 코드가 매우 많은데 엔진과 통신 할때마다 메모리가 쌓이는게 눈에 보일 때도 있을 정도임


이제 이런 애들이 수십 수백 마리가 생긴다면? 메모리 상황이 매우 빠르게 악화된다

더 무서운건 이런 경우에만 나타나는 문제가 아닐수도 있다는 거지 힙 할당이 너무 많아서 어디서 폭탄이 터질지 모르는 상황이라


너희들은 늦기 전에 C# 쓰지마라 아직도 원활하게 쓸 수준은 아닌것 같다


추천 비추천

4

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2872 설문 연예인 안됐으면 어쩔 뻔, 누가 봐도 천상 연예인은? 운영자 24/06/17 - -
3668 일반 오늘한거 총결산 [1] ㅇㅇ갤로그로 이동합니다. 03.03 115 3
3667 일반 고도3에 export onready 같이 쓰는건 왜 그런거임? [2] ㅇㅇ(125.137) 03.03 110 0
3666 일반 댓글창개웃기네 [2] ㅇㅇ(59.14) 03.03 201 0
3665 일반 고도Quest 강의 샀다 [4] 파대사갤로그로 이동합니다. 03.02 206 2
3663 일반 스팀꺼 다운받아서 하는데 자꾸 튕김.. ㅇㅇ(211.221) 03.02 98 0
3662 일반 저번에 스크립트 렉걸리고 뷰포트 튕긴다는거 해결했습니다 ㅇㅇ(118.223) 03.02 60 2
3661 일반 그럼 내부동작이 cpp라는 건 [2] ㅇㅇ(180.182) 03.02 197 0
3660 창작, 드디어 스팀 페이지 오픈 [2] !CyberApex갤로그로 이동합니다. 03.02 521 10
3659 일반 고도도 내부 cpp아님? [5] ㅇㅇ(180.71) 03.01 231 0
3658 일반 고붕이 고닷의 「진리」를 깨우쳐버림... [8] solish갤로그로 이동합니다. 03.01 270 1
3656 일반 고도랑은 상관없는데 웃겨서 가져와봄 [5] ㅇㅇ(118.235) 03.01 206 0
3655 일반 오전에 한거 [1] ㅇㅇ갤로그로 이동합니다. 03.01 95 2
3654 창작, 뉴비의 뱀서라이크 만들기 [2] 비베타갤로그로 이동합니다. 03.01 202 2
3652 일반 ?????? 내꺼 Gemma 리포에 박제됨 [7] rrop갤로그로 이동합니다. 02.29 634 13
3651 일반 버튼에 간단하게 입력 딜레이 거는 법 있습니까? [4] ㅇㅇ갤로그로 이동합니다. 02.28 184 0
3650 일반 고도 비주얼스크립팅 다시 생기나봄 [3] ㅇㅇ(180.71) 02.28 168 0
3649 일반 고도러다 질문 받음 [14] (222.106) 02.28 213 0
3648 일반 유뎀잇 파이어벨리 다 들었는데 이제뭐들으면됨 [1] ㅇㅇ(223.39) 02.27 103 0
3647 일반 고도 렌더링 디바이스도 나중에 파보고 싶네 [3] ㅇㅇ갤로그로 이동합니다. 02.27 154 2
3646 일반 dex로 고도돌리기 [1] 꼴전사갤로그로 이동합니다. 02.27 129 0
3645 일반 is_instance_valid() 이건 어떤 역할인가요 [4] 지가르데갤로그로 이동합니다. 02.27 107 0
3643 일반 고도3 강의 보면서 고도4 공부해도 유효함? [3] 돌피니와트갤로그로 이동합니다. 02.27 192 0
3642 창작, 아름다운 소음을 듣는 게임 완성 [5] !CyberApex갤로그로 이동합니다. 02.26 562 7
3641 자료 GEMMA-GODOT 데모 완성해옴 [6] rrop갤로그로 이동합니다. 02.26 579 7
3640 일반 TDB1 일지 4 [1] 지가르데갤로그로 이동합니다. 02.25 91 1
3639 일반 질문) 애니메이션 재생 왜 첫 프레임만 보여줌?? [4] ㅇㅇ갤로그로 이동합니다. 02.25 135 0
3638 일반 오늘 열심히 했다 [4] ㅇㅇ갤로그로 이동합니다. 02.25 419 10
3637 일반 클래스 변수 질문 [9] ㅇㅇ(180.71) 02.25 120 0
3636 일반 아무리 vscode가 좋아졌다고 해도 [1] ㅇㅇ(125.137) 02.25 206 0
3634 일반 Git 꼭 배웁시다 [3] ㅇㅇ(118.235) 02.25 256 1
3632 자료 속보) 게임에 탑재할 수 있을정도로 가벼운 LLM모델 공개됨 [6] rrop갤로그로 이동합니다. 02.25 324 0
3628 일반 아래 스크립팅할 때, 랙나는 거.. ㅇㅇ(175.192) 02.24 82 0
3627 일반 시그널을 무슨 함수와 연결했는지 쉽게 알 수 없음? [8] ㅇㅇ(180.71) 02.24 171 0
3626 일반 질문 2가지 튕김 및 렉 [12] ㅇㅇ(118.223) 02.24 220 0
3625 일반 저에게 고도에 대한 믿음을 주세요 [4] ㅇㅇ(211.234) 02.24 192 0
3624 일반 이게 너무 높은 목표라는 걸 뒤늦게 깨달았다 [3] ㅇㅇ(110.8) 02.24 171 0
3622 일반 4.3 비쥬얼쉐이더편집기 근황 [3] ㅇㅇ(59.14) 02.24 195 0
3621 일반 노드의 visible을 false 로 해놓으면 없는거랑 마찬가지임? [10] 마찌롱갤로그로 이동합니다. 02.23 153 0
3620 일반 해~앳...♥ [2] ㅇㅇ(180.71) 02.23 170 4
3619 일반 러스트 고도단 근황 [2] ㅇㅇ(59.10) 02.23 269 4
3618 일반 보면볼수록 해앳쟝 맘에드는걸 [5] ㅇㅇ(223.38) 02.23 140 0
3617 일반 커스텀 아이콘 쓰니까 이쁨 [1] ㅇㅇ(116.33) 02.22 148 1
3615 일반 2d 탑다운 게임인데 카메리 lerp사용해서 드래깅? 하는 느낌 주려면 [2] ㅇㅇ(211.230) 02.22 110 0
3614 일반 유니티 에셋 추출하려면 결국 유니티 설치해야됨? [6] 돌피니와트갤로그로 이동합니다. 02.22 206 0
3613 일반 본인 고도엔진 배우는 도중에 엄청난 위기를 맞이함. [3] ㅇㅇ(118.45) 02.21 269 3
3612 일반 사소한 디테일 하나 고치는데 3시간 썼다. [4] 마찌롱갤로그로 이동합니다. 02.21 172 4
3611 일반 고도에서 좀 무거운 3d게임 만드는 사람 있음? [7] ㅇㅇ(59.9) 02.21 305 0
3610 창작, 한글화 [8] ㅇㅇ(1.248) 02.21 484 9
3609 일반 몇가지 생각해본 고민(궁금증?)인데 누가 정답 알려줄 수 있을까 [3] 마찌롱갤로그로 이동합니다. 02.21 138 1
3608 일반 GD스크립트로 제로에서 코딩하는 법 배우기 발번역-1 [2] 파대사갤로그로 이동합니다. 02.20 240 2
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2