기본 콘텐츠로 건너뛰기

개발 공부 - GC (추가)

* 공부하기 위해 크롤링 후 공부

GC의 동작 방식

1. 힙 메모리 영역에서 다음 메모리 할당을 위한 포인터가 존재한다.

2. 힙에 무언가를 할당하면 그 크기만큼 포인터가 이동한다.

3. GC의 특정 조건이 만족되면 모든 스레드를 중단하고, GC 쓰레드를 활성화한다.

4. 레퍼런스가 존재하지 않는 메모리들을 삭제하고, 사용 중인 메모리들의 위치를 재조정한다.



장점

 - 자동으로 메모리가 관리되기 때문에 프로그래머가 관리할 필요가 없다.

 - 메모리 누수가 없어진다.

 - 유효하지 않은 포인터에 접근하지 않는다.

 - 이중해제 문제에서 자유롭다. (이미 해제된 메모리를 다시 해제하는 오류)



단점

 - 해제할 메모리를 조사하는데 비용이 든다.

 - 할당된 메모리가 해제되는 시점을 알 수 없다.

 - 실시간 시스템에서 프로그램 동작 중 GC가 원하지 않는 순간 발생하면 프로그램 동작에 문제가 생길 수 있다. 



세대별 GC

GC를 최적화하는 기법은 세대별 GC라는 것이 존재한다.

 

3가지 세대(0세대, 1세대, 2세대)로 구분되어

최초 GC를 실행한 뒤, 살아남은 객체는 1세대로 옮겨진다.

이후 새롭게 할당된 메모리들에 대해서만 레퍼런스를 검사하고 GC를 수행하다가

0세대가 용량 한계가 되면, 1세대에 대해서도 레퍼런스 검사를 하고 살아남은 1세대는 2세대로 옮긴다.

 

메모리에 남아있었던 객체의 메모리들은 2세대에 계속 남아있게 되며,

모든 메모리의 레퍼런스를 검사하는 것보다는 없어질 가능성이 높은 메모리들에 대해서만 먼저 검사를 하는 것.


잠깐 쓰고 사라져도 되는 객체를 상대적으로 크기가 작은 New 영역에 할당하고, New 영역에서 기준 시간 이상으로 오래 살아남은 객체가 있다면 Old 영역으로 이동시켜 "세대" 구분을 하는 방법이 사용되고 있다.


0세대 : GC가 아직 적용되지 않은 것
1세대 : 0세대와 2세대 사이
        * 1세대는 GC 후 남은 것을 옮긴 객체임
2세대 : GC를 2번 이상 겪고도 힙에 저장되어 있는 객체임

GC가 실행되면 0->1->2 순으로 세대 변경이 되거나, 삭제됨.
0세대 -> GC를 시키면 1세대로 이동 -> 또 GC를 해서 살아남은 것은 2세대로 이동




* JAVA 8 과 JAVA 11의 GC 변경점
(추가) 없애는 날 전체 이해한 것으로...









출처 : https://mentum.tistory.com/482
https://namu.wiki/w/%EC%93%B0%EB%A0%88%EA%B8%B0%20%EC%88%98%EC%A7%91
https://cyk0825.tistory.com/88?category=1124085











댓글

이 블로그의 인기 게시물

Ebook - 전자책 drm 상관 없이 pdf로 만들기

yes24와 교보문고에서 ebook을 구매 해야 했는데 너무 불편하고, 필기가 매우 화날 정도로 안 좋아서 원시적으로 사용하기로 했다. 1. 목적 : ebook에서 필기 및 사용이 불편하여 pdf로 변환  2. 용도 : 개인 사용 목적이며 화질이 다소 저하되어도 필기만 용이하면 상관 없음 3. 방법 1) 휴대폰 및 카메라로 동영상을 촬영했다. DRM 때문에 프로그램으로는 촬영이 안 되는 것을 확인했다. (사실 개인 사용 목적이면 기본 화면 캡쳐를 사용해도 된다...) 2) 마우스 클릭 해주는 매크로를 사용했다. (1) key_macro.exe > https://blog.daum.net/pg365/250 듀얼 모니터에서 위치 이탈 현상이 있긴 해도 괜찮았다. (2) AutoClick.exe > http://bestsoftwarecenter.blogspot.com/2011/02/autoclick-22.html 이 걸로 잘 사용했다. 3초마다 한 번 클릭하도록 사용했다. 3) 동영상을 이미지로 변경해주는 프로그램을 사용했다. Free Video to JPG Converter > https://www.dvdvideosoft.com/products/dvd/Free-Video-to-JPG-Converter.htm (240826: 다운로드 시 정상적으로 되지 않아서 URL 수정) 일 하면서 듀얼 모니터에 켜 놨는데 속도가 괜찮았다. * Every frame 으로 사용해야 한다. 4) 중복 사진 제거해주는 프로그램을 사용했다. VlsiPics  > http://www.visipics.info/index.php?title=Main_Page 생각보다 느리니 퇴근시에 걸어놓고 가면 된다. 한번 play가 끝나면 Auto-select 하고 Delete 하면 된다. 5) 이미지를 일괄 Crop 작업 해주는 프로그램을 사용했다. JPEGCrops > https://jpegcrops.softonic.kr/ *...

운동 정보 - 어메이즈핏 밴드 5 스마트밴드 나이키 런 클럽(NRC = Nike Run Club) 연동

 나이키 런 클럽 쓰려고 산 어메이즈핏 밴드5 인데 연동이 영 어려워서 찾아보고 써봤다. 1. Zepp 앱은 연동이 되어 있어야 한다. 2.  Zepp 앱 -> 프로필 -> 내 기기 -> Amazfit Band 5 3. 검색 가능 : 켜짐 활동 심박수 공유 : 켜짐 연결 제한 : 꺼짐 (기본) 백그라운드에서 실행 : 제외로 등록 4. NRC(나이키 런 클럽) 앱 -> 설정 -> 러닝 설정 -> 기기 5. 심박수 표시 -> 블루투스에서 AmazFit Band 5 누르고 NRC 즐기면 된다! * 안드로이드 이용자입니다.

개발 공부 - PC 카카오톡 작업 표시줄 아이콘 이미지 변경 방법

PC 카카오톡 사용시 작업 표시줄에서 아이콘 이미지를 변경하는 방법이다. 1) 작업 표시줄 내 카카오톡 아이콘에서 마우스 오른쪽 버튼을 누른  뒤 속성에 들어간다. 2) 아이콘 변경에서  C:\Windows\system32\imageres.dll C:\Windows\system32\shell32.dll C:\Windows\system32\DDORes.dll C:\Windows\System32\moricons.dll (MS DOS Icons) 등을 누른 뒤 적당한 것을 선택하여 적용한다. * 사내 메신저 아이콘을 참고해도 된다. 참고 : 기본 아이콘 위치 https://blog.silnex.kr/windowstip-windows-%EA%B8%B0%EB%B3%B8-%EC%95%84%EC%9D%B4%EC%BD%98-%EC%9C%84%EC%B9%98/ 2022. 11. 29.  생각보다 유입이 많아서 놀랐습니다. PC 카톡 사용자 화이팅!