recherche

Maison  >  Questions et réponses  >  le corps du texte

java - 在程序里读取磁盘文件时,为什么需要使用缓冲区。

java中,读取磁盘文件时,通常都使用BufferedInputStream包装FileInputStream。
但是操作系统内核读取磁盘文件时,不是会将内存作为磁盘文件的缓冲区吗?
那为什么还要在程序里自己使用缓冲区??

伊谢尔伦伊谢尔伦2858 Il y a quelques jours1024

répondre à tous(6)je répondrai

  • 天蓬老师

    天蓬老师2017-04-17 17:46:56

    Parce que le système d'exploitation doit isoler l'espace utilisateur et l'espace système pour protéger la sécurité des données, pour être précis, lorsque le système d'exploitation lit un fichier, il lit le fichier dans l'espace système puis le copie vers l'utilisateur de l'application. processus. Espace, c'est-à-dire le propre tampon du programme comme mentionné dans la question. Si le processus utilisateur est autorisé à accéder directement au tampon de l'espace du système d'exploitation, le système d'exploitation ne serait-il pas dangereux ?

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:46:56

    FileInputStream/FileOutputStream déclenchera une opération IO à chaque fois que read()/write() est appelé.
    BufferedInputStream/BufferedOutputSteam appelant read()/write() ne déclenchera pas d'opération IO à chaque fois. Il écrit simplement dans le tampon interne. L'opération IO ne sera déclenchée que lorsque le tampon interne est plein ou que flush() est appelé. .

    Moins il y a d'opérations d'E/S, meilleures sont les performances.

    répondre
    0
  • 高洛峰

    高洛峰2017-04-17 17:46:56

    Lors des opérations d'E/S, la JVM créera un tableau d'octets en tant que tampon dans son propre espace de tas. Généralement, les utilisateurs ne peuvent pas appeler directement la mémoire (directbuffer) via la JVM. L'interaction entre le tampon d'espace de tas et la mémoire est gérée par. la JVM. De cette façon, nous pouvons profiter des avantages de la JVM, tels que le mécanisme GC et l'API encapsulée de haut niveau Java.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 17:46:56

    Le système d'exploitation lira non seulement les fichiers du disque dur dans la mémoire et les utilisera comme cache, mais ouvrira également un autre espace dans la mémoire pour mettre en cache les données dans la mémoire.
    A quoi ça sert ? Pour la gestion et l’efficacité.
    Le taux d'échange de données entre la mémoire et la mémoire est deux ordres de grandeur supérieur au taux d'échange de données entre la mémoire et le disque dur.
    Lorsqu'un processus sur la mémoire a besoin de données, s'il y a des données correspondantes dans le cache mémoire, elles seront récupérées directement depuis la zone de cache
    Sinon, elles seront lues à partir du disque dur. (Il en va de même pour l'écriture)

    L'importance de la conception du cache de Java pour les opérations d'E/S est également présente.
    La différence est que les données mises en cache par Java ne peuvent être utilisées que par l'environnement d'exécution actuel de Java.
    Par rapport à la récupération fréquente des données du cache du système d'exploitation, cela améliore l'efficacité de l'exécution
    Cela est particulièrement vrai lorsque votre code nécessite des opérations d'E/S fréquentes.

    répondre
    0
  • 高洛峰

    高洛峰2017-04-17 17:46:56

    La plupart des soi-disant tampons sont encapsulés dans la zone d'interface par le matériel du disque dur, et la zone tampon n'est pas grande. Le système d'exploitation ne met pas en cache le contenu des fichiers dans la mémoire.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:46:56

    Parce que votre disque dur n'est pas assez rapide !

    répondre
    0
  • Annulerrépondre