2014-01-10 2 views
0

내가 쓰는 버디 메모리 할당 자 시스템을 통해 메모리 덩어리를 관리하려고합니다. unsafe를 사용하여 메모리 덩어리를 할당하고 알고리즘을 사용하여 관리 할 수 ​​있습니다. 이러한 청크에 ByteBuffer 인터페이스를 제공하여 Java NIO에서 네트워킹 코드로 사용할 수 있도록해야합니다. 안전하지 않은 청크 위에 ByteBuffer 인터페이스의 모든 단일 기능을 실제로 구현하지 않고 어떻게이 작업을 수행 할 수 있는지 잘 모르겠습니다. 이것은 과잉처럼 보인다.ByteBuffer 인터페이스가있는 Java의 버디 메모리 할당 자

내가 생각할 수있는 한 가지 옵션은 아마도 리플렉션을 사용하여 바이트 버퍼 오브젝트를 가져 와서 개인용 용량 및 메모리 주소 필드를 변경하고 또한 직접 구현으로 표시하여 기존 구현을 피기 백 할 수 있습니다. 여하튼 그것은 그것이 일하지 않을 것 같이 보인다.

또한 직접적인 큰 ByteBuffer를 사용하고 그 위치와 용량 필드가 변경된 슬라이스로 청크를 나타낼 것이라고 생각했습니다. 되감기 같은 작업을 수행하면 위치가 다시 0으로 설정되므로 작동하지 않는 것처럼 보입니다.

더 좋은 방법이 있습니까? 어쩌면 전체 인터페이스를 구현해야 할 것입니다.

ByteBuffer 인터페이스를 구현하는 일반적인 방법은 무엇입니까?

답변

0

호기심이 많은 사람이라면 처음의 메모리를 얻기 위해 하나의 다이렉트 바이트 버퍼를 사용하게되었습니다. 그 안에 작은 덩어리를 나타 내기 위해 복제하고 리플렉션을 사용하여 용량 및 주소 필드를 변경했습니다. 이 방법은 기존의 직접 바이트 버퍼 구현을 사용할 수 있습니다.