수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

[질문] 자바의 메모리 관리좀 알려주세요

새늘

2023.04.01

안녕하세요. 그 좋다는 자바의 가비지 콜렉션.. 전 갈피를 못잡고 있습니다.
자바로 클래스를 지역 함수에서 선언 생성후 함수가 종료되면 이론상으로는 그 선언된 클래스 변수는 삭제됩니다.

그런데.. 이거 프로그램 종료될때까지 자바가 실행되던 중에 생성된 메모리가 그대로 있습니다.

물론 이것이 나중에 같은 루틴을 돌때 이미 생성된 메모리를 사용하기 때문에 속도에 도움이 된다는 건 압니다.

문제는 서버제작 시 입니다.
얼마나 접속 요청이 들어올지 모르는 상황에서 동적 할당된 메모리는 접속자가 0이되면 처음 상태로 돌아가 줘야 합니다.

그렇지만 테스트해보니 이론상으로는 지워져도 물리적 메모리는 줄지 않더군요.

황당 합니다.
더군다나 벡터를 이용하여 remove 시키면 또한 바로 삭제 가능하다고 들었습니다.

이또한 아니더군요
벡터에 인덱스 2까지 넣었다가 removeAll 시키면 이론상 벡터에서 삭제됩니다.

다시 add를 할경우 물론 인덱스 2를 넘을때까지는 메모리가 증가하지 않습니다.

문제는 removeAll이 되면 벡터에 추가되면서 생성된 메모리는 모두 지워져야 하는데 이또한 메모리 재사용을 위해서인지

전혀 줄지 않고 있습니다.
-------------------------------------------------------------------------------------------------------------------
1. 제가 위에 테스트 한 결과가 맞나요?

2. 순간적으로 C처럼 원할때 지울 수 있는 방법은 존재하나요?

3. 맞다면 이런 상황으로 서버를 그냥 제작해도 무리가 가지는 않나요?

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 더글러스

    제가 잘 몰랐네요. null 대입을 잘 하고 조금 텀이 있지만 gc()가 날려주긴 하는군요. 진수다님. 수다님. 감사합니다 ..

  • 해솔

    사용이 끝난 객체는 레퍼런스에 null 을 대입해주고 신경 끄면 됩니다.

  • 양자리

    참고로 말씀드리자면, System..gc() 를 호출한다고 해서 바로 쓰레기 수집기(garbage collector)가 작동되는것은 아닙니다. System 클래스의 소스코드를 보면, System.gc() 는 내부적으로 Runtime.gc() 를 호출하게 되어있는데, Runtime.gc() 에 대한 javadoc 의 설명은 다음과 같습니다.

    The name gc stands for \garbage collector\. The virtual machine

  • 달빛

    그럼 이 상태로 그냥 서버 프로그램을 해도 괜찮을 지요?

  • 나츠

    // Let gc do its work
    \tfor (int i = 0; i elementCount; i++)
    \t elementData[i] = null;

    \telementCount = 0;
    }

  • 갤투

    자바는 직접적인 메모리 해제가 안됩니다. 다만, 생성한 객체의 참조 카운트를 줄여주는 것 입니다. 말씀하신 벡터의 경우 removeAll()를 사용해서, 저장된 객체들을 해제하는데... 실제로 removeAll() 함수의 소스코드를 보면, 다음과 같이 되어 있습니다. 즉, 사용한 객체에 대한 참조를 해제 하는것은 단순히 참조주소를 지우고, null로 초기화 하는것 뿐입니다. 그리고, 가끔 너무 많은 메모리를 잡았다가 다시 해제 할려고 할 경우에는 Sys

번호 제 목 글쓴이 날짜
2699518 javaScript중복체크 하는법좀.. 알려주세요 (3) 비 2025-06-26
2699495 이런 탭메뉴를 뭐라고 해야 하는지 모르겠네요 (1) 들빛 2025-06-26
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
2699354 영문 웹폰트 관련 질문입니다!!! (1) 치킨마루 2025-06-25
2699329 윈도우 미디어 플레이어 URL 질문!!! (1) 제철 2025-06-25
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
2698796 이 오류를 이해를 못하겠어요 Addicted 2025-06-20
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com