【问题标题】:Could memory issues in Java cause a BufferedReader to return null prematurely?Java 中的内存问题会导致 BufferedReader 过早返回 null 吗?
【发布时间】:2015-03-18 01:30:40
【问题描述】:

我有一个程序从 InputStream 中读取数据,直到遇到空值。但是,该程序似乎并未获得所有可用数据。是否有可能由于内存问题过早出现空值?我没有收到内存错误,但我确实得到了不同大小的文件,并且在进行可能释放内存的更改时获得了更大的文件。我的计划是运行 Java 并提供更多内存选项。

代码:

while ((inputStr = streamReader.readLine()) != null){   
  doStuff();
}

【问题讨论】:

  • 你能贴出代码来演示这个问题吗?
  • 我从未听说过。为什么不发布您的代码,这可能会使调试更容易。
  • @KickButtowski 没有提到在问题中调用任何空值。
  • @ejp 我说的是我猜的一般规则
  • @KickButtowski 你还说这个问题没有意义。你说这是因为你对通过空值调用的评论。这是错误的,而且无关紧要。

标签: java memory


【解决方案1】:

Java 中的内存问题会导致 BufferedReader 过早返回 null 吗?

没有。你会得到一个OutOfMemoryError, 而不是一个过早的空值。

【讨论】:

  • 我应该提到,当我删除一些可能释放内存的调试代码时,我会走得更远。
  • 一些问题。 1、输入源是什么? 2.你做了什么处理,它是否包含一个break或return语句? 3. 你有什么证据表明你没有处理整个流? 4. 如果只做上面的代码加上行数,会不会出现这种情况?
  • 我们正在从一个 url 读取数据,而我们没有获得所有数据的证据不仅是数据的供应商说还有更多,而且是从数据创建的输出文件的可变大小.处理基本上是,读一条记录,写一条记录。尚未尝试行数。没有中断或返回,但是您是否遇到 OutOfMemory 错误可能会被捕获,而我将其误认为是发生 null 的情况?简单的实验将增加更多的内存。
  • 由于内存问题,您完全找错了树。它不是那样工作的。您在某处删除或引入了错误。仔细看。
【解决方案2】:

问题实际上是导致文件关闭的磁盘空间问题(当被捕获时,这是清理的一部分)——没有遇到空值。未显示磁盘空间错误,因为无法完成对日志文件的写入。感谢“吠错树”的评论,因为我确实是。我应该补充一点,这因在 Amazon Web Services 上运行的代码而变得复杂。

如果我没有向海报提供足够的信息,我很抱歉,但正如我所说,输入很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 2012-12-03
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多