Garbage Collector 및 finalize () 메서드와 관련된 질문

Shrikant Kakani

Java의 Garbage Collection과 finalize () 메소드에 대해 읽고 있었는데 내 마음을 사로 잡은 몇 가지 의심이 있습니다. 이러한 의심이 정말 어리 석다고 생각한다면 죄송합니다.

  1. http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html 기사를 읽었습니다 . 여기에서 포인트 5는 '메모리에서 개체를 제거하기 전에 가비지 수집 스레드가 해당 개체의 finalize () 메서드를 호출하고 필요한 모든 종류의 정리를 수행 할 수있는 기회를 제공합니다' 라고 말합니다 . 그럼이 일이 확실히 일어나나요? 내 말은 가비지 콜렉터 메서드를 실행하기 전에 finalize () 메서드가 항상 호출된다는 의미입니까?

  2. 가비지 콜렉터는 실행이 필요하다는 것을 어떻게 알 수 있습니까? 예를 들어 서버에 배포 된 애플리케이션이 있는데 GC는 언제 실행됩니까? 주기적으로 실행됩니까, 아니면 일부 (예 : 1MB)의 가비지가 수집되고 트리거가 실행되거나, 또는 무작위로 실행되고 언제 실행 될지 결정할 방법이 없습니까?

  3. 가비지 수집이 발생하지 않기 때문에 애플리케이션의 성능이 어떻게 저하됩니까?

  4. 힙에 많은 가비지가 있지만 가비지 수집기가 실행되지 않는다고 가정합니다. 이런 일이 발생하면 나쁜 행동이나 JVM의 결함이 아닌가?

  5. 프로그래머로서 우리가 충분히 똑똑하고 '그렇게 참조되지 않은'포인터를 폐기해야 할 때를 알고 있다는 점을 고려하면 Java보다 C / C ++에서 수동으로 수행되는 가비지 수집이 더 낫다고 말할 수 있습니까?

Avi
  1. finalize()개체가 정리되기 직전에 발생합니다. 문제는-당신은 그것이 언제 일어날 지 (그리고 그것이 일어날 지조차도) 모른다는 것입니다. finalize청소 에 의존하지 말고 물체가 범위를 잃기 전에 직접 청소하십시오. 또한 finalize()가비지 컬렉션주기에서 실행됩니다. 즉, finalize가비지 개체 를 구현 하면 정리하는 데 2주기가 걸리므로 정리할 수있는 메모리 낭비가 발생합니다. 또한 실행하는 데 더 많은 CPU가 소비되고 finalize언제인지 알 수 없습니다. 많은 개체가있는 finalize경우 GC 중에 함께 실행되어 전체 응용 프로그램을 장기간 일시 중지 할 수 있습니다 .

  2. 가비지 콜렉션 발생시기를 결정하기 위해 조정할 수있는 다양한 알고리즘이 있습니다. 또한 JVM에 할당하는 힙 크기에 따라 다릅니다 (이전 대 신세대 크기, 생존자 공간 크기 등과 같은 다른 매개 변수와 함께 ...). 작은 앱을 다루는 경우 일반적으로 기본 구성으로 충분합니다. 대규모 앱을 작성하고 시간, CPU 시간 및 일시 중지 시간에 따른 성능을 고려해야하는 경우 (때로는 GC가 전체 앱을 일시 중지 함)-힙 메모리 모델과 조정할 수있는 다양한 GC 알고리즘 및 매개 변수에 대해 더 잘 읽어보십시오. GC를 제어하여 더 나은 요구 사항을 충족합니다.

  3. 애플리케이션 성능은 발생하는 GC주기 (발생하지 않는 GC주기가 아님)의 영향을받습니다. 예를 들어, 힙이 너무 작 으면주기가 자주 발생합니다. 힙이 너무 크면주기가 덜 자주 발생하지만 각각 실행하는 데 더 오래 걸릴 수 있습니다. 다시 말하지만, 이는 모두 선택한 GC 알고리즘 및 튜닝 매개 변수와 힙 메모리 할당 (젊은 세대의 메모리 수, 구세대의 메모리 수, 생존자 공간 비율 등 ...)에 따라 달라집니다.

  4. 새 개체를 할당 할 공간이 아직 충분하지 않으면 쓰레기가 많고 수집이없는 시나리오는 보이지 않습니다. 공간이 부족하거나 거의 부족할 때 (선택한 수집 알고리즘과 힙 크기 및 기타 매개 변수에 따라) 수집이 있습니다.

  5. Java 가비지 수집기는 프로그래머가 C또는 같은 관리되지 않는 언어에서 경험 한 고통스러운 문제를 해결합니다 C++. 장점과 단점이 있습니다. 메모리에 대한 절대적인 제어가 필요한 경우 C. 시스템을 더 쉽게 작성하고 GC에 추가 메모리를 할당하고 GC와 약간의 CPU 시간을 공유하는 데 신경 쓰지 않을 때 더 빠르게 작성할 수 있습니다 (더욱 강력합니다. 메모리 누수 및 기타 불쾌한 것들) 자바로.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

createSelector 및 createEntityAdapter와 관련된 Redux 문서의 질문

분류에서Dev

조인 및 집계와 관련된 SQL 질문

분류에서Dev

심볼릭 링크 및 복사와 관련된 질문

분류에서Dev

반응에서 카운터 증가 및 감소와 관련된 기본 질문

분류에서Dev

Java [Garbage Collection]의 Finalize 메서드

분류에서Dev

c의 traceroutes와 관련된 몇 가지 관련 질문 :

분류에서Dev

판매 및 트렌드와 관련된 앱 스토어 문제

분류에서Dev

각도 재질 및 ng- 메시지 관련 문제

분류에서Dev

Windows IOT-MAC 및 파일 저장 /로드 관련 질문

분류에서Dev

최종 필드와 관련된 setter 메서드의 문제

분류에서Dev

엔터티의 해시 코드와 같음 및 toString 메서드에 관한 질문

분류에서Dev

풀 및 푸시와 관련된 Git 문제

분류에서Dev

Python 및 외국어와 관련된 인코딩 문제

분류에서Dev

부모 및 자식 요소와 관련된 문제

분류에서Dev

여백 및 layout_gravity와 관련된 Android TableLayout 문제

분류에서Dev

액션 및 에코 결과와 관련된 PHP 양식 문제

분류에서Dev

라우팅 및 구성 푸시와 관련된 Openvpn 문제

분류에서Dev

'경로 내보내기'와 관련된 pyenv 및 anaconda 문제

분류에서Dev

Where 및 Contains와 관련된 LINQ to Entities 성능 문제

분류에서Dev

19.10 : crypttab 및 업데이트와 관련된 스왑 문제

분류에서Dev

연도 및 순위와 관련된 문자열 반환

분류에서Dev

Ktor 백엔드 및 프런트 엔드의 Axios와 관련된 CORS 문제

분류에서Dev

Python에서 정규식 및 명명 된 참조 관련 문제

분류에서Dev

MongoDB의 모범 사례와 관련된 질문

분류에서Dev

주소와 레지스터 (MCU 주소) 및 관련 질문의 차이점

분류에서Dev

glDrawRangeElements와 관련된 문제

분류에서Dev

C에서 참조에 의한 전달과 관련된 질문

분류에서Dev

ByteBuffer=Garbage collector spam

분류에서Dev

중괄호 ( "{"및 "}")와 관련된 Python 문자열 형식화 문제

Related 관련 기사

  1. 1

    createSelector 및 createEntityAdapter와 관련된 Redux 문서의 질문

  2. 2

    조인 및 집계와 관련된 SQL 질문

  3. 3

    심볼릭 링크 및 복사와 관련된 질문

  4. 4

    반응에서 카운터 증가 및 감소와 관련된 기본 질문

  5. 5

    Java [Garbage Collection]의 Finalize 메서드

  6. 6

    c의 traceroutes와 관련된 몇 가지 관련 질문 :

  7. 7

    판매 및 트렌드와 관련된 앱 스토어 문제

  8. 8

    각도 재질 및 ng- 메시지 관련 문제

  9. 9

    Windows IOT-MAC 및 파일 저장 /로드 관련 질문

  10. 10

    최종 필드와 관련된 setter 메서드의 문제

  11. 11

    엔터티의 해시 코드와 같음 및 toString 메서드에 관한 질문

  12. 12

    풀 및 푸시와 관련된 Git 문제

  13. 13

    Python 및 외국어와 관련된 인코딩 문제

  14. 14

    부모 및 자식 요소와 관련된 문제

  15. 15

    여백 및 layout_gravity와 관련된 Android TableLayout 문제

  16. 16

    액션 및 에코 결과와 관련된 PHP 양식 문제

  17. 17

    라우팅 및 구성 푸시와 관련된 Openvpn 문제

  18. 18

    '경로 내보내기'와 관련된 pyenv 및 anaconda 문제

  19. 19

    Where 및 Contains와 관련된 LINQ to Entities 성능 문제

  20. 20

    19.10 : crypttab 및 업데이트와 관련된 스왑 문제

  21. 21

    연도 및 순위와 관련된 문자열 반환

  22. 22

    Ktor 백엔드 및 프런트 엔드의 Axios와 관련된 CORS 문제

  23. 23

    Python에서 정규식 및 명명 된 참조 관련 문제

  24. 24

    MongoDB의 모범 사례와 관련된 질문

  25. 25

    주소와 레지스터 (MCU 주소) 및 관련 질문의 차이점

  26. 26

    glDrawRangeElements와 관련된 문제

  27. 27

    C에서 참조에 의한 전달과 관련된 질문

  28. 28

    ByteBuffer=Garbage collector spam

  29. 29

    중괄호 ( "{"및 "}")와 관련된 Python 문자열 형식화 문제

뜨겁다태그

보관