>  Q&A  >  본문

既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢

既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢

伊谢尔伦伊谢尔伦2744일 전785

모든 응답(10)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-18 10:51:43

    메모리 리소스는 제한되어 있습니다. 가비지 수집은 "쓰레기"만 재활용합니다. 프로그램 실행에 유용한 개체는 재활용되지 않습니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:51:43

    메모리 오버플로에는 두 가지 상황이 있습니다. 하나는 무한 재귀 호출과 같은 스택 오버플로입니다. 힙 오버플로도 있습니다. 즉, new에서 나오는 객체는 항상 new와 같이 즉시 소멸되지 않습니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 10:51:43

    잘못 작성된 일부 프로그램은 GC 메커니즘이 적용되기 전에 객체를 무한정 생성하기 때문입니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:51:43

    일반적으로 Java의 메모리 누수는 프로그램에 더 이상 필요하지 않은 할당된 메모리를 회수할 수 없다는 사실을 의미합니다.
    가비지 수집 메커니즘은 객체와 루트 객체의 연결 가능성을 통해 메모리를 회수할 수 있는지 여부를 결정합니다. 그러나 프로그래밍 오류 또는 기타 이유로 인해 만료된 객체 참조는 여전히 유지되며 가비지 수집기가 관련 객체를 회수할 수 없습니다. 공간.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:51:43

    맨홀을 차지하고 똥을 싸지 않으면 할 수 있는 일이 없습니다.
    동료가 쓴 블로그를 읽어보시길 권합니다: http://blog.csdn.net/zhanggan...

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:51:43

    일부 객체는 더 이상 필요하지 않지만 항상 참조되며 재활용할 수 없습니다.

    회신하다
    0
  • PHPz

    PHPz2017-04-18 10:51:43

    인간이 만든 것은 인간 자신을 능가할 수 없습니다. Java의 GC 알고리즘은 인간이 작성했지만 일부 사람들은 목숨을 걸고 GC로 재활용할 수 없는 코드를 작성합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:51:43

    中国那么大,为什么还有人在朝阳区懵逼과 동일합니다.

    회신하다
    0
  • PHPz

    PHPz2017-04-18 10:51:43

    제가 이해한 내용이므로 틀렸다면 정정해 주시기 바랍니다.
    JDK6에서는 String의 메소드를 subString이라고 하며, 이는 하위 문자열을 생성하는 데 사용됩니다. 더 빠른 생성을 위해 String에는
    String(int offset, int count, char value[]) {

    생성자가 있습니다. 으아아아

    }
    은 원래 문자열 배열을 직접 가리킵니다. 우리 모두는 상수 풀의 새로운 String 문자열이 매번 생성된다는 것을 알고 있습니다. 그러나 이 참조로 인해 원래 문자열이 재활용되지 않습니다. subString의 값이 그를 가리킬 것이기 때문입니다. 이로 인해 메모리 누수가 발생합니다.

    JVM은 프로그래머의 큰 간섭 없이 자체적으로 GC를 수행합니다. 그러나 일부 잘못된 작업으로 인해 더 이상 사용할 필요가 없는 일부 객체에는 여전히 참조가 있어 메모리 누수가 발생합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:51:43

    JVM: 프로그래머들이 쓰레기를 붙잡고 있어서 정말 당황스럽습니다.

    회신하다
    0
  • 취소회신하다