Son cache et votre propre cache ne sont pas le même concept. Le processus général est le suivant.
Lors de l'utilisation d'inputstream sans mise en cache
Chaque fois que vous lisez, le système effectue une opération de lecture pour lire les données. Si vous spécifiez un octet à lire, il lira un octet, si vous spécifiez un tableau, il lira un tableau Le. différence entre votre programme et les données L'efficacité de la lecture a une excellente relation.
et lors de l'utilisation de bufferedinputstream, cela ressemble à ceci
Lorsque vous créez bufferedinputstream, il lira immédiatement les données et les mettra dans la mémoire gérée par jvm A chaque fois que vous les lisez, il n'y retournera plus. . La lecture depuis le système le lira depuis la mémoire. Données , puis déterminez s'il reste beaucoup de choses dans la mémoire. Sinon, il demandera au système de lire l'opération. Que vous lisiez un octet ou un tableau, le système ne le fera pas nécessairement Fera fonctionner le disque dur. La corrélation entre l'efficacité de votre programme et la lecture des données est très faible.
Pensez-y sous un autre angle,
Si vous utilisez un flux sans buffer, ouvrez le fichier puis fermez-le immédiatement, le système ne fera aucun appel de données, et la fermeture sera exécuté rapidement. Et si vous ouvrez le fichier avec un flux tamponné, même s'il est fermé immédiatement sans lecture, la fermeture ne sera pas exécutée immédiatement, et le système a déjà lu une partie des données dans la mémoire , ce qui sera moins efficace que d'utiliser sans tampon.
Bien sûr, personne ne s'ennuierait au point de créer un flux puis de le fermer sans le lire, n'est-ce pas ?
Il n'y a aucune relation entre la mise en mémoire tampon et l'utilisation de tableaux pour recevoir du contenu. Cela ne signifie pas qu'avec la mise en mémoire tampon, il n'est pas nécessaire que les tableaux reçoivent du contenu.
Parce que nous espérons réutiliser cet octet[], sinon face à une transmission d'E/S de flux de données volumineux, vous constaterez que YGC sera très heureux
Son cache et votre propre cache ne sont pas le même concept. Le processus général est le suivant.
Chaque fois que vous lisez, le système effectue une opération de lecture pour lire les données. Si vous spécifiez un octet à lire, il lira un octet, si vous spécifiez un tableau, il lira un tableau Le. différence entre votre programme et les données L'efficacité de la lecture a une excellente relation.
Lorsque vous créez
Pensez-y sous un autre angle,bufferedinputstream
, il lira immédiatement les données et les mettra dans la mémoire gérée par jvmA chaque fois que vous les lisez, il n'y retournera plus. . La lecture depuis le système le lira depuis la mémoire. Données , puis déterminez s'il reste beaucoup de choses dans la mémoire. Sinon, il demandera au système de lire l'opération. Que vous lisiez un octet ou un tableau, le système ne le fera pas nécessairement Fera fonctionner le disque dur.
La corrélation entre l'efficacité de votre programme et la lecture des données est très faible.
Si vous utilisez un flux sans buffer, ouvrez le fichier puis fermez-le immédiatement, le système
Bien sûr, personne ne s'ennuierait au point de créer un flux puis de le fermer sans le lire, n'est-ce pas ?ne fera aucun appel de données, et la fermeture sera exécuté rapidement. Et si vous ouvrez le fichier avec un flux tamponné, même s'il est fermé immédiatement sans lecture, la fermeture ne sera pas exécutée immédiatement, et le système
a déjà lu une partie des données dans la mémoire , ce qui sera moins efficace que d'utiliser sans tampon.
Il n'y a aucune relation entre la mise en mémoire tampon et l'utilisation de tableaux pour recevoir du contenu. Cela ne signifie pas qu'avec la mise en mémoire tampon, il n'est pas nécessaire que les tableaux reçoivent du contenu.
Parce que nous espérons réutiliser cet octet[], sinon face à une transmission d'E/S de flux de données volumineux, vous constaterez que YGC sera très heureux