일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 누구를 위한 교육과정인가?
- 4차 산업혁명
- 제프리 울만
- 동영상 플레이어
- 휴먼명조
- 단편 드라마
- Code Blast
- 2022 개정 교육과정
- 베스트 극장
- MontyHall
- 2021년 튜링상
- 패트릭 브링리
- 매트로폴리탄 미술관
- 인공지능
- code.org
- 알프레드 에이호
- 박사 논문
- 중학교 교육과정
- 머신러닝
- 나만의 독서법
- 파일 검색
- 블록 코딩
- 코드 폭발 효과
- 선각자
- Visual Studio Code
- 수학적 귀납법
- 욱
- 앱
- 안드로이드
- 변곡점
- Today
- Total
코딩하는 공무원
Actor 객체의 메모리 해제 시점 본문
객체에 대한 참조가 있거나 월드 상에 존재하면(보이지는 않더라도 월드 상에 있다면) 어째든 메모리에 상존합니다.
참조가 없고 ‘그리고’ Actor 객체가 removeObject() 메서드에 의해서 월드 상에서 없어져야 가비지 컬렉팅의 대상이 됩니다.
객체에 대한 참조가 있는 한 removeObject() 메서드가 호출되었다고 해서 메모리 해제가 되는 것은 아니므로 주의해야 합니다. 따라서, 많은 객체들을 생성한 후 removeObject() 메서드를 호출하면 눈에는 보이지 않는 객체들이 메모리에는 그대로 남아 있다는 것이지요.. 참조가 있는 한 이러한 객체들은 메모리 상에 존재하므로 언제든지 addObject() 메서드를 통해서 월드 상에 다시 보이게 할 수 있습니다.( 이때 새로운 위치 값을 설정해야 합니다. 왜냐하면 월드 상에서 사라졌을 당시의 위치값은 잃어버리기 때문입니다.)
이러한 객체들이 많을 경우 out of memory 메시지가 나타나지 쉽상이지요... 또는 Greenfoot 이 매우 느려지기도 합니다.
메모리 부족 오류를 없애기 위해서는 removeObject() 메서드를 호출한 후 해당 객체의 참조가 있을 경우 참조변수를 null로 만들어야 합니다.
이렇게 참조가 없어진 객체는 JVM에 의해 ‘쓰레기’로 판단하여 자동 해제됩니다. 다만, 쓰레기 수집은 JVM이 필요하다고 판단할 때 실행됩니다. System.gc()를 호출하여 JVM에게 쓰레기 수집을 더 빨리 수행하도록 요청할 수는 있지만, 이것 또한 JVM 마음이지요... 즉, Java 언어에서 쓰레기 수집은 ‘비결정적’입니다.
기억해 둘 점!!!
객체가 메모리에서 해제되기를 원한다면 removeObject() 메서드를 호출한 후 참조를 null로 설정하세요!
'컴퓨터교육' 카테고리의 다른 글
BlueJ에서 Greenfoot 시나리오 열기 (0) | 2012.10.16 |
---|---|
Greenfoot IDE에서 자동 호출되는 메서드와 그 호출 과정 (0) | 2012.10.10 |
Greenfoot 2.2.1 에서 Class Diagram의 클래스 명이 잘리는 경우 (0) | 2012.09.19 |
Greenfoot에서 Native Library 사용하는 방법 (0) | 2012.08.15 |
현재 KOI를 주최하는 정보화 진흥원의 문제점 (0) | 2012.06.06 |