반응형

 

 

안녕안녕!

이상한 노래로 인해서

몸이 무거운 하루야!

 

곧 주말인데 시국이 시국이라

놀지도 못하고...!

그래서 공부를 하자!

 

오늘은 Java에서 필수요건중 하나인 친구를 소개할건데

우리가 뭐.. 따로 만들고 지지고 볶는건 아니니까

이건 참고하며 개념만 잡아두면 좋을것같아!

 


Garbage Collector

 

직역하면 쓰레기수집가야

아주 괴랄한 취미를 가진 녀석이지

 

이녀석이 왜 있는걸까?

 

C언어와 Java를 비교해서 설명을 해주자면

C언어의 경우는 객체에 할당되는 메모리 영역의 경우

온전히 개발자의 영역으로써 직접 관리를 해줘야한다는거야

 

관리를 못한다..? 누락이 되었다..?

그럼 메모리 누수가 발생하게 되는데

즉, 실질적으로 사용이 끝나거나 하지않음에도 불구하고

메모리 할당을 받고있다보니까

 

버퍼오버런이나, 버퍼오버플로같이 악영향이 발생하는데

이는, 메모리를 다루는데 있어서 오류가 발생하니까

프로그램이 정상적인 동작을 못하는걸 뜻해

 

그렇게 되면..? 프로그램의 신뢰성을 떨어뜨리기도하고,

다른 데이터가 손상이 되기도해

 

메모리의 접근오류나 잘못된 결과, 프로그램을 종료해버리거나

다양한 문제점이 발생하지

 

Java에서는 

Java언어 자체에서 Garbage Collector를 제공해주고있어.

이 친구는 백드라운드에서 데몬 쓰레드를 통해 동작하고

접근 불가능한 상태라 말하는 Unreachable 가 된 객체들을

 

"얘들아!! 너희 일끝났지? 퇴근해도 좋아!"하고

메모리를 정리해주는 역할이야

 

 

 

데몬쓰레드는 일반 쓰레드는 아니고

쓰레드를 보조하는 바드나 알리스타같은 느낌인거야

 

즉 봇에서 베인이랑 바드가 있는데

갱을 오는 바람에 루시안, 알리, 워윅이

우리 베인을 때려 눕혔어

 

서포터는 어떻게해? 

"씌익씌익.. 집에갔다온다 훗날을 도모하지"

이러고 집으로가지

 

이 친구들도 똑같아

 

일반적은 쓰레드가 종료가 되면 데몬쓰레드도 강제적으로 종료가 되는 친구야

(데몬 쓰레드와 쓰레드는 다음에 더 자세하게 포스팅예정)

 


Garbage Collector는 기본적으로

두가지의 물리 공간을 가지고 있는데

 

Old Generation

Young Generation

 

구시대, 신세계 뭐 이런게 아냐

 

예능 프로그램으로 예를 들자면

흔히 팀을 나눌때, YB팀과 OB팀 이렇게 나누는걸 봤을거야

 

근데 게스트로 20대가 왔다면..? 

YB의 맏형은 OB로 가서 막내 생활을 해야하는 모습이 종종 보이거든?ㅋㅋ

 

즉 프로그램 적으로는 Young에서 살아남았지만 접근불가상태가 되지 않은 친구들 있지?

그런 친구들을 Old로 보내고 Old 영역에서 객체가 사라질때는 Major GC가 발생을 하지

 

약간 정년퇴직같은 느낌이랄까 ㅠㅠ

 

그럼 반대로 Young의 상황은 어떻겠어?

 

말 그대로 게스트를 생각하면 되는거야

자꾸 새로 들어왔다가 다음편에서는 또 다른 게스트가 오고..

즉 새로운 객체들이 위치하는데,

많은 객체가 생겼다가~ 사라졌다가~하고 Moinor GC 라고해


오늘은 간단하게 이정도 까지만 설명을 했지만..

이 영역은 은근 공부의 양이 많은 영역이라 다음에 심층적으로 다루려고해

그러니 아~ 이러한 친구구나~ 정도는 알아두는게 좋기에

이 정도 까지만 설명하고자 해,

 

간단 최종정리!

 

필요없어진 객체들 슥삭 하고 지워주며

메모리를 정리함.!

 

그럼 20000!

 

 

 

 

 

 

 

 

반응형