2014-09-15 3 views
0

연습에 직접 매핑 된 버퍼의 내 지식은java.nio.MappedByteBuffer 물리적/가상 주소는

직접 버퍼는 항상 가비지 수집 힙의 외부에 거주합니다.

그래서 나는 재미 있고 런타임에 흥미로운 정보를 얻을 수 있다고 생각합니다. 특히, 어떻게 버퍼의 시작 가상 주소를 얻을 수 있을까요, 버퍼의 물리적 주소를 시작하고, 버퍼 크기? 나는 우분투를 사용하고 있으며 가상 -> 물리적 번역 부분에 대해서도 매우 궁금합니다. 이것을 달성 할 수있는 도구가 있습니까?

+0

의미가 있지만 반드시 그런 것은 아닙니다. API 문서는 해당 정보에 액세스하는 메커니즘을 제공하지 않습니다. – chrylis

+0

API가 아니어도됩니다. os 측의 다른 응용 프로그램/도구가 있습니까? –

+0

물론입니다. 하지만 어떤 OS를 사용하고 있는지도 알려주지 않았습니다. 그리고 당신은 당신의 질문에 잘못을 표시했습니다. 논리적 주소의 실제 주소를 얻는 방법을 알고 싶다면 Java와 아무런 관련이 없습니다. – Holger

답변

0

버퍼 크기를 알고 있기 때문에 알 수 있습니다.

JNI를 통해 가상 주소를 가져올 수 있습니다.

실제 주소를 가져올 방법이 없으며 가능하면 할 수있는 유용한 방법이 없습니다.

+0

버퍼에 대한 하드웨어 측면에서 작업 중이므로 실제로 실제 주소가 중요합니다. 그것은 개념적으로 OS 쪽에서 도구를 사용하여 알아낼 수 있어야합니다. 나는 단지 도구가 무엇인지 궁금해. –

+0

커널 내부에 있다면 실제 주소를 얻을 수는 있지만 자바 나 MappedByteBuffer가 없다. 문제를 자세히 설명해야합니다. – EJP

+0

그건 내 문제 야. 이것을 얻을 수있는 구체적인 방법이 있습니까? 내 Java 프로그램에서 물리적 주소에 대해 "커널을 들여다 보며"라는 시스템 호출을 시작할 수 있습니까? –