gpt4 book ai didi

java - 如果我从文件中读取一个大字符串,JVM 实际上会做什么?

转载 作者:行者123 更新时间:2023-12-01 14:23:58 25 4
gpt4 key购买 nike

这是我的想法:

  1. JVM 将字符串从文件系统复制到主内存中。
  2. JVM 将字符串从主内存复制到 Java 堆中。
  3. 使用它。

我说得对吗?我的意思是,实际上有两步复制。

最佳答案

vea可能有超过 2 个副本。很大程度上取决于您的阅读方式。

考虑将 FileReader 封装在 BufferedReader 中的常见情况。

当你调用 BufferedReader.readLine() 时,你会得到三个副本。

1) BufferedReader 是空的(要启动),因此它在 FileReader 上调用 read(char[])。

2) FileReader(位于 JVM 的 C 层)对 uint8[] 缓冲区进行 read() 系统调用。 (副本1)

3) 最好的情况 FileReader 然后转换 unit8[] 内容并将结果复制到 BufferedReader 提供的 char[] 中(副本 2)。 (请注意,即使我们有一个输入流并且结果是一个字节[]而不是字符串,这个副本仍然存在。)

4) readLine() 然后将 char[] 复制到行尾到字符串中。 (副本3)。

对于大多数事情,您无需担心所有复制。缓冲区很小,开销也很小。

关于java - 如果我从文件中读取一个大字符串,JVM 实际上会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com