JavaTM Platform
Standard Ed. 6

java.nio
클래스 MappedByteBuffer

java.lang.Object 
  상위를 확장 java.nio.Buffer 
      상위를 확장 java.nio.ByteBuffer 
          상위를 확장 java.nio.MappedByteBuffer
모든 구현된 인터페이스:
Comparable <ByteBuffer >


public abstract class MappedByteBuffer
extends ByteBuffer

파일의 메모리 맵 영역을 내용으로 하는 다이렉트 byte 버퍼입니다.

맵 된 byte 버퍼는,FileChannel.map 메소드로 작성됩니다. 이 클래스는, 맵 된 메모리 파일의 영역에 특유의 조작을 이용할 수 있도록(듯이),ByteBuffer 클래스를 확장하고 있습니다.

맙드 byte 버퍼와 이것에 의해 나타내지는 파일 매핑은, 버퍼 자체가 가베지 컬렉트될 때까지 유효합니다.

예를 들어, 하등의 프로그램에 의해, 맵 된 파일의 대응하는 영역의 내용이 변경되면, byte 버퍼의 내용도 변경됩니다. 이러한 변경이 발생할지 어떨지, 또 어느 타이밍에 발생할까는, operating system에 따라서 다르기 (위해)때문에, 미지정입니다.

맵 된 byte 버퍼 전체 또는 그 일부에 액세스 할 수 없게 되는 일이 있습니다. 예를 들어, 맵 된 파일이 절약하고를 하면(자), 이러한 사태가 발생합니다. 맵 된 byte 버퍼의 액세스 불가인 영역에 액세스 하려고 해도, 버퍼의 내용은 변경됩니다만, 액세스 했을 때 또는 그 후에 미지정의 예외가 throw 됩니다. 사전에 적절한 예방 조치를 취해, 이 프로그램이나 병행해 실행되고 있는 프로그램으로부터, 맵 된 파일에 대해서 read와 기입해 이외의 조작을 실행할 수 없게 하는 것을 강하게 추천합니다.

그 이외의 점에서는, 맵 된 byte 버퍼는 일반적으로의 다이렉트 byte 버퍼와 같이 동작합니다.

도입된 버젼:
1.4

메소드의 개요
 MappedByteBuffer force ()
          현재의 버퍼의 컨텐츠에의 변경을, 맵 된 파일이 포함되고 있는 기억장치에 강제적으로 기입합니다.
 boolean isLoaded ()
          현재의 버퍼의 컨텐츠가 물리 메모리내에 있을지 어떨지를 판단합니다.
 MappedByteBuffer load ()
          현재의 버퍼의 컨텐츠를 물리 메모리에 로드합니다.
 
클래스 java.nio. ByteBuffer 로부터 상속된 메소드
allocate , allocateDirect , array , arrayOffset , asCharBuffer , asDoubleBuffer , asFloatBuffer , asIntBuffer , asLongBuffer , asReadOnlyBuffer , asShortBuffer , compact , compareTo , duplicate , equals , get , get , get , get , getChar , getChar , getDouble , getDouble , getFloat , getFloat , getInt , getInt , getLong , getLong , getShort , getShort , hasArray , hashCode , isDirect , order , order , put , put , put , put , put , putChar , putChar , putDouble , putDouble , putFloat , putFloat , putInt , putInt , putLong , putLong , putShort , putShort , slice , toString , wrap , wrap
 
클래스 java.nio. Buffer 로부터 상속된 메소드
capacity , clear , flip , hasRemaining , isReadOnly , limit , limit , mark , position , position , remaining , reset , rewind
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , finalize , getClass , notify , notifyAll , wait , wait , wait
 

메소드의 상세

isLoaded

public final boolean isLoaded()
현재의 버퍼의 컨텐츠가 물리 메모리내에 있을지 어떨지를 판단합니다.

반환값이 true 의 경우는, 현재의 버퍼내의 모든 데이터가 물리 메모리에 포함되고 있을 가능성이 높아집니다. 이 경우, 데이터에 액세스 했을 때에, 가상 메모리-의 페이지 위반이나 입출력 조작은 발생하지 않습니다. 다만, 반환값이 false 의 경우에서도, 버퍼의 내용이 물리 메모리에 포함되고 있는 일이 있습니다.

반환값은 절대적인 것은 아니고, 단순한 단서입니다. 왜냐하면, 이 메소드 호출이 값을 돌려줄 때까지 에, 기초에 있는 operating system에 의해 버퍼의 데이터의 일부가 페이지 아웃 되고 있을 가능성이 있기 때문입니다.

반환값:
현재의 버퍼의 컨텐츠가 물리 메모리에 포함되고 있을 가능성이 있는 경우 true

load

public final MappedByteBuffer  load()
현재의 버퍼의 컨텐츠를 물리 메모리에 로드합니다.

이 메소드는, 값을 돌려줄 때, 현재의 버퍼의 내용을 물리 메모리내로 할 수 있을 뿐(만큼) 포함하려고 합니다. 이 메소드를 호출하면(자), 페이지 위반이나 입출력 조작이 발생할 가능성이 있습니다.

반환값:
현재의 버퍼

force

public final MappedByteBuffer  force()
현재의 버퍼의 컨텐츠에의 변경을, 맵 된 파일이 포함되고 있는 기억장치에 강제적으로 기입합니다.

현재의 버퍼에 맵 되는 파일이 로컬의 기억장치에 포함되고 있는 경우는, 파일을 작성하고 나서 또는 이 메소드를 마지막으로 호출하고 나서 간 모든 변경이, 값을 돌려줄 때 이 기억장치에 강제적으로 기입해집니다.

한편, 파일이 로컬의 기억장치상에 없는 경우, 기입은 행해지지 않습니다.

현재의 버퍼가 읽어들여/기입 모드 (FileChannel.MapMode.READ_WRITE )로 맵되어 있지 않았던 경우는, 이 메소드를 호출해도 아무것도 일어나지 않습니다.

반환값:
현재의 버퍼

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.