kotlin closure 는 별도의 메모리 공간에 데이터를 복사해서 가지고 있는게 맞을까요?
384
작성한 질문수 35
Java 에서 Final 만 사용할 수 있는게 외부 변수가 메모리에서 해제 되었을 경우, 가비지를 참조할 수 있는 것을 방지하기 위해서로 알고 있는데
코틀린은 이게 가능한게 아예 메모리를 통째로 떠와서 그런걸까요? ㅎㅎ
강의 영상에서 포획한다 라고 표현하신게 그런 의미 같아요!
답변 1
1
안녕하세요!! 크으~~ 날카로운 질문이십니다~~ 👍👍
결론부터 말씀드리면, 코틀린의 경우 컴파일 과정에서 가변 변수를 Object로 감싸 (포획하여), 그 Object를 람다에서 접근하게 하고 있습니다.
에서 Kotlin이 변수를 capture 하는 방식을 확인해보실 수 있는데요! 한 줄 요약 드리면, 어떤 변수를 Object로 만든 다음, 그 Object의 reference를 각 람다가 공유하는 방식입니다.
표현해주신 "메모리를 뜬다"와 비슷한 느낌이기도 하네요 ㅎㅎㅎㅎ
다만 이 원리 자체가 thread-safe 하지는 않다 보니 사용에 주의가 필요할 수 있습니다.
또 궁금하신 점 있으시면 편하게 질문 남겨주세요!
감사합니다~!! 😊 🙇
수업노트
0
57
1
싱글톤과 스프링
0
74
2
get() = 3
0
51
2
강사님
0
75
1
강의 복습하면서 생긴 질문
1
97
1
Kotlin과 Java의 현업에서의 활용
0
127
2
data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문
0
75
1
코틀린에서 상속 시, 주의점에 대한 질문
1
98
3
내용 이해 질문
0
58
1
자바와 코틀린의 함수형 프로그래밍,
1
91
1
플랫폼 타입 설명 문의
2
77
2
널 아님 단언 관련 질문
0
86
1
강의 중 질문
0
80
2
범위 비교 질문
1
93
2
타입캐스팅 궁금한점 질문드립니다.
1
240
2
코틀린 val 질문
0
167
2
완강 후 Kotlin 이런저런 질문 드려봅니다!
3
410
2
확장함수 스타일 질문
0
140
2
확장 프로퍼티 질문
1
158
1
update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!
1
283
1
java class의 NotNull 어노테이션 인식
1
264
1
[16강] 확장함수 관련 질문입니다!
1
134
2
리턴타입 사용시 any를 사용해도 괜찮은가요?
1
142
1
안녕하세요 scope function 에 receiver 가 없는 경우
1
172
1





