Java에 런타임에 GC.AddMemoryPressure method in .NET과 같은 관리되지 않는 메모리 할당에 대해 알려주는 기능이 있습니까?java 메모리 압력
답변
자바에서는 필요하지 않습니다. '작은 관리 객체가 대량의 관리되지 않는 메모리를 할당하는 경우'은 Java에서 간단히 발생하지 않을 수 있습니다. JNI를 통해 네이티브 (관리되지 않는) 함수를 호출하면 메모리가 JVM의 관리되는 메모리 테이블에 할당되지 않습니다. 참고로
:
직접 메모리가 자바에서 별도로 관리하고, "관리되지 않는"으로 간주 될 수엄밀히 말하자면, 두 런타임 시스템은 메모리 관리에 대해 다른 가정을합니다. Java/JRE는 그다지 중요하지 않다고 가정합니다. –
관리되는 개체는 많은 양의 기본 메모리와 약간의 관리되는 메모리를 가질 수 있으므로 gc에서는 괜찮아 보이고 해당 개체는 수집하지 않습니다. 잠시 후 기본 힙이 가득 차서 OutOfMemoryException이 발생합니다. 그것은 Deflater 클래스의 문제점과 같습니다. 이 문제는 http://www.devguli.com/blog/eng/java-deflater-and-outofmemoryerror/에서 발견되었습니다. end() 메서드를 수동으로 호출하는 것이 좋습니다. 가비지 컬렉터를 사용하지 않아야하는 일종의 tradeof라고 생각합니다 (gc 사용시 메모리 할당 해제에 대해 신경 쓸 필요가 없습니다). –
@Donal Fellows : 일부 수치를 지적 해 주시겠습니까? 나는 그 성명서에 도전하고 싶지 않고 관심이 있습니다! – home
. Sun/Oracle JVM에서는 자체 메모리 사용 제한이 있으며 힙 크기와 직접 메모리 크기의 한도에 도달 할 수 있습니다.
Sun/Oracle JVM에서 내부 API를 사용하여 직접 메모리 블록을 명시 적으로 해제 할 수 있습니다. 비록 그렇게해야하는 경우는 드물지만 여기에 있습니다.
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024);
((DirectBuffer) bb).cleaner().clean();
GC를 트리거하지 않고이 작업을 1 만 번 수행 할 수 있습니다.
BTW : 메모리 매핑 된 파일은 소량의 힙을 사용하며 직접 메모리 제한에 포함되지 않습니다. 지도에 표시 할 수있는 양은 사실상 무제한입니다. (하나의 MappedByteBuffer에서 2GB로 제한됨)
이것은 GC.AddMemoryPressure와 직접적인 관련이 없습니다. 이것은 Java를 통해 모든 원시 메모리 할당을 수행하기 위해 응용 프로그램을 다시 작성하는 것을 의미합니다. 많은 네이티브 라이브러리에서 이것은 받아 들일 수 없을 것이다. – yano
@yano 대부분의 코드를 Java (또는 C#과 같은 다른 고급 언어)로 작성하고 네이티브 코드로 작성하는 것이 좋습니다. –
- 1. SQL CLR의 메모리 압력 알림
- 2. .Net 웹 서비스 메모리 압력 오류
- 3. C#에서 메모리 압력/GC 실행 측정하기
- 4. 플래시의 펜 압력
- 5. 버튼이 눌려지는 압력 받기
- 6. JQTouch 압력 감도
- 7. Sealevel 압력 및 온도 계산
- 8. Java 메모리 부족 예외
- 9. Java LockSupport 메모리 일관성
- 10. Java ME 메모리 부족
- 11. Java Hibernate 메모리 누수
- 12. 배열의 메모리 주소 - Java
- 13. 인코딩 : Java 메모리 누수
- 14. Java 메모리 인식 캐시
- 15. Java 메모리 할당 정렬
- 16. Java - 클래스의 메모리 할당
- 17. Java 메모리 누수
- 18. Java 메모리 사용/복구
- 19. Java BigDecimal 메모리 사용?
- 20. 인 메모리 Java DB
- 21. Java 메모리 사용량
- 22. 가속도계를 사용하여 탭 압력 강도 감지
- 23. Android 기기에서 압력 감도가 얼마나 잘 지원됩니까?
- 24. 네이티브 프로세스로 Java 메모리 사용
- 25. 스택 대 Java 메모리 할당
- 26. Java 요청되지 않은 메모리 할당
- 27. java while 루프 메모리 누수
- 28. HashMap을 사용한 Java 메모리 관리
- 29. Java 메모리 매핑 파일은 무엇입니까?
- 30. matlab 함수에서 Java 메모리 지우기
"품질 기준"에 대한이 항목은 무엇입니까? –
그 stackoverflow 품질 표준 검사기를 전달하는 자리 표시 자 텍스트입니다. –
@misha nesterernko 장소 소유자 텍스트? 질문의 일부가 아니라면 거기에있을 필요가 없습니다. – berry120