En javascript, al abrir un archivo a través de un botón devuelve un objeto Blob (por ejemplo, blob1).
Luego puedo obtener los datos reales del blob a través de blob1ArrayBuffer = blob1.arrayBuffer();
Cuando se crea el objeto Blob (por ejemplo, blob1), ¿carga todos los bytes en la memoria?
¿O simplemente devuelve la dirección para que luego los bytes reales se puedan leer a través blob1.arrayBuffer() ?
No, todo el archivo no se lee en la memoria (puede intentar abrir un archivo de unos pocos TB, eso aún debería funcionar).
Sin embargo, tenga en cuenta que el sistema operativo aún necesitará leer parte de ese archivo para producir los metadatos del archivo. Esto puede tomar algunas veces en algunas condiciones (por ejemplo, al seleccionar carpetas con muchos archivos, o al seleccionar un archivo de un disco de red, etc.)
Incluso cuando blob1.arraybuffer() el archivo completo no se coloca necesariamente en la memoria, ya que las especificaciones solicitan que todos los consumidores del Blob usen un ReadableStream para obtener los datos. Pero, obviamente, en este caso, los datos completos se copiarán en el ArrayBuffer resultante que probablemente vivirá en la memoria.