Java에서 메모리에 남아 있지 않은 가비지가 포함 된 배열과 같이 초기화되지 않은 메모리 블록을 할당하는 방법이 있습니까? 자바의 메모리 할당 자/가비지 컬렉터가 얼마나 빨리 메모리 블록을 할당 할 수 있는지 벤치마킹하기 위해 그렇게하고 싶습니다.Java : 초기화되지 않은 메모리 블록을 할당 하시겠습니까?
답변
아니요 배열과 초기화를 구분할 수는 없습니다.
정확하게 벤치마킹을 시도하고 있습니까?
내가 물어 본 이유는 객체 할당 타이밍에 영향을주는 실행중인 JVM 내에서 변수의 위치 (할당 된 위치를 결정하는 객체의 크기)에서 무엇이 일어나고 있는지에 이르기까지 다양합니다. Hotspot이 코드가 아무 것도하지 않고 no-op로 대체 될 수 있는지 여부를 결정하는 동시에 JVM을 동시에 (객체 할당을 시작하면 다양한 세대 사이에 섞여 버립니다). 덧붙여
, 벤치마킹의 malloc()에 방해가 변수 비슷하지만 중복되지 않는 ...
이 있습니다 당신은 당신이 발생하지 않습니다 뭔가를 벤치마킹 될이 작업을 수행 할 수 있다면 실제 프로그램을 사용하면 결과가 아무런 의미가 없습니다.
나는 이와 비슷한 작업을 수행했으며 할당에는 약 250 ns의 시간과 500 ns 이상의 10 %의 시간과 약 1,200 ns의 1 %의 시간이 소요된다는 것을 알게되었습니다.
이것은 프로세서 속도, 컴퓨터의 메모리 아키텍처 및 생성하려는 개체에 따라 다릅니다.
내가 할 수없는 이유 중 하나는 보안 모델 때문이라고 생각합니다.
보안과 함께 Java를 사용할 필요는 없습니다. Java의 철학은 모든 것을 예측 가능하게 만드는 것입니다 (합리적으로 가능한 한 많이). 모든 것을 제로로 만드는 것은 그 중 일부입니다. –
당신이 할 수있는 유일한 방법은 JNI를 사용하는 것입니다. JNI를 사용하면 실제 Java 사용을 반영하지 않는 벤치 마크를 얻을 수 있습니다. 다른 사람들이 이미 제시 한 이유들 때문에. Java를 통한 모든 할당 ("new"를 통한)은 항상 메모리를 초기화합니다.
아마도 java.nio.ByteBuffer가 당신이 찾고있는 것입니다. 당신의 이유는 약간은 모호합니다 :-)
메모리의 초기화되지 않은 블록을 할당하는 방법은 없습니다. 과은 "정상적인"할당/GC 메커니즘을 거칩니다.
당신이 무엇을 할 수 do는 (네이티브 메서드에서) 임의의 메모리 주소에서 직접 ByteBuffer를 구성합니다. 하지만 그것은 "정상적인"객체 처리에 대한 벤치 마크를 제공하지는 못합니다 (벤치마킹하려는 것이 정상적인 할당/할당 취소 일 경우, 왜 이것을 원 하느냐는 명확하지 않습니다).
- 1. Java 요청되지 않은 메모리 할당
- 2. 초기화되지 않은 변수가없는 Java NullPointerException
- 3. Java 메모리 할당 정렬
- 4. Java - 클래스의 메모리 할당
- 5. 메모리 할당 해제 루틴이 해제되는 블록을 터치합니까?
- 6. 스택 대 Java 메모리 할당
- 7. OpenGL의 초기화되지 않은 텍스처
- 8. 리눅스에서 메모리 할당
- 9. C++에서의 메모리 할당
- 10. 초기화되지 않은 배열 오프셋
- 11. 초기화되지 않은 상수 Iconv
- 12. 문제 초기화되지 않은 상수
- 13. "초기화되지 않은 상수 Authlogic"
- 14. 초기화되지 않은 상수 문제는
- 15. 루비는 초기화되지 않은 상수
- 16. 초기화되지 않은 상수 오류
- 17. 초기화되지 않은 상수
- 18. RoutingError 초기화되지 않은 상수
- 19. 메모리 할당 및 해제
- 20. 메모리 재 할당
- 21. 메모리 할당
- 22. 메모리 할당
- 23. 메모리 할당
- 24. for 루프에서 초기화되지 않은 변수
- 25. Windows 메모리 할당 질문
- 26. 메모리 누출의 C/메모리 할당 ++
- 27. Fortran 2003에서 초기화되지 않은 변수
- 28. 초기화되지 않은 상수 MysqlCompat :: MysqlRes
- 29. 초기화되지 않은 값이 초기화되고 있습니까?
- 30. 초기화되지 않은 상수 Builder :: XmlMarkup
'새 Object [200]'은 공백을 할당하지 않지만 각 항목을 초기화하지 않은 채로 둡니까? – Cogsy
아니요, 각 항목을 null 으로 초기화합니다. http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc.html#anewarray – kdgregory
또는 구현 내용이 정확하면 메모리가 이미 초기화되었습니다. –