2010-11-23 4 views

답변

10

메모리 매핑 된 파일에 대해 OS 지원을 사용합니다.

나는 그것을 뒷받침 할 문서를 찾으려고하지만 아직 결정적인 것을 찾지 못했습니다. 그러나, 문서 의 다양한 비트 사물은 다음과 같이 말 할 : 메모리 매핑 된 파일의 세부

대부분은 기본 운영 체제에 따라 본질적으로 의존 때문에 미지정입니다. 요구 된 영역이이 채널의 파일 내에 완전하게 포함되지 않은 경우의이 메소드의 동작은 지정되지 않습니다. 이 프로그램 또는 다른 프로그램에 의한 기본 파일의 내용이나 크기에 대한 변경 사항이 버퍼에 전파되는지 여부는 지정되지 않습니다. 버퍼에 대한 변경 사항이 파일에 전파되는 속도는 지정되지 않습니다.

모든 것이 방금 에뮬레이션 된 경우 이러한 지정되지 않은 동작이 필요하지 않습니다.

+0

답변 해 주셔서 감사합니다. 내가 당신을 이해 : java.nio 클래스 (메모리 매핑 된 파일을 조작하기위한) 포장 Windows API는 메모리 매핑 된 파일 함수를? 나는 맞습니까?))) – Edward83

+1

나는 약간의 시험을하려했습니다. 하나의 MMF를 만들고이를 Win32 C++와 Java with nio의 두 프로세스간에 공유하려고했습니다. 하지만 테스트에서 실패했다. 왜냐하면 내가 자바에서 "Named"MMF를 만들거나 열 수 없기 때문이다. LOL))) – Edward83

9

질문과 의견의 줄을 읽으려고 시도하는 것은 메모리 매핑 된 파일을 사용하여 Java와 C++ 응용 프로그램간에 메모리/개체를 공유하는 것입니다.

제 조언은 입니다.을 시도하지 마십시오.

하기 위해 해결해야 할 어려운 문제가있다이 신뢰성 :

  • 는 하나의 응용 프로그램에 의해 변경 내용이 확실하게 작성되도록한다는,
  • 를 공유 데이터 구조의 두 응용 프로그램의 사용을 동기화 주 메모리에 저장하고 다른 하나에 의해 읽으려는 경우, 변경 내용이 예상 된 순서로 디스크로 플러시되도록 보장하십시오.

Java의 특정 문제는 Java 객체를 메모리 매핑 된 영역에 배치 할 수 없다는 것입니다. 대신 C++ 측에서 기대하는 표현과 호환되는 어떤 방법으로 직렬화 및 비 직렬화해야합니다. 당신이 버전을 변경하면 잠재적으로 변경 될 수 OS, C++ 및 Java 구현 의 지정되지 않은 행동에 의존하기 때문에 당신이 그 모든 문제를 해결에 성공할 경우에도 마지막

는 솔루션은 깨지기 쉬운 될 가능성이 높습니다 위의 어느 것.

+0

답변 해 주셔서 감사합니다! 유용한 조언;) – Edward83

관련 문제