Pregunta

archivos

Son asignada en memoria en Java como archivos mapeados-memoria para Windows? O es sólo basado en la emulación de las operaciones de memoria y comunes de archivos en Java?

¿Fue útil?

Solución

Se utiliza el soporte del sistema operativo para los archivos de memoria asignada.

Estoy tratando de encontrar documentación para respaldar eso, pero no he encontrado nada todavía concluyentes. Sin embargo, varios fragmentos de los documentos no dicen cosas como esta:

  

Muchos de los detalles de los archivos mapeados en memoria dependen intrínsecamente en el sistema operativo subyacente y son, por tanto, no especificada. El comportamiento de este método cuando la región solicitada no está completamente contenida dentro del archivo de este canal no está especificado. Si los cambios realizados en el contenido o el tamaño del archivo subyacente, por este programa u otro, se propagan a la memoria intermedia está especificado. La velocidad a la que cambia a la memoria intermedia se propagan al archivo está especificado.

Si todo se acaba emulado, no habría necesidad de que tal comportamiento no especificado.

Otros consejos

Lectura entre las líneas de su pregunta y comentario, lo que está tratando de hacer es usar un archivo de memoria asignada a la memoria share / objetos entre una aplicación Java y C ++.

Mi consejo es no trate de hacer esto .

Hay cuestiones difíciles que deben ser abordados para hacer de este fiable:

  • sincronizar el uso de las dos aplicaciones de la estructura de datos compartida,
  • asegurar que los cambios realizados por una aplicación fiable consiguen escriben en la memoria principal y leído por el otro,
  • asegurar que los cambios se vacían al disco en el orden esperado.

Un problema específico de Java es que no se puede poner objetos de Java en el área de memoria asignada. En su lugar usted tiene que serializar y deserializar ellos de alguna manera que sea compatible con las representaciones que el lado C ++ está esperando.

Por último, incluso si tienen éxito en el tratamiento de todas estas cuestiones, su solución es probable que sea frágil, porque depende de la conducta no especificada del sistema operativo, C ++ y las implementaciones de Java que potencialmente puede cambiar si cambia versiones de cualquiera de los anteriores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top