【问题标题】:java.io.BufferedReader.readLine() consuming 99% CPU Why?java.io.BufferedReader.readLine() 消耗 99% CPU 为什么?
【发布时间】:2013-06-26 11:29:50
【问题描述】:

在这段代码中,我正在从流中读取一个值。但是 readline() 方法占用了更多的 CPU。你能帮我解释一下为什么会这样,并给我建议以尽量减少 CPU 使用率。

    HttpURLConnection request = (HttpURLConnection) url.openConnection();
    request.setRequestMethod("POST");
    request.setRequestProperty("Content-Length", "0");
    request.setUseCaches(false);

    InputStreamReader in = new InputStreamReader((InputStream) request.getContent());
    BufferedReader buff = new BufferedReader(in);  

    while(line = buff.readLine() != null) {
   System.out.print("hello");
    }

【问题讨论】:

  • 为什么你想让你的程序运行得更慢?
  • “消耗 99% CPU”持续多长时间?
  • 从我启动我的应用程序并消耗 99% 的 CPU 直到我关闭我的应用程序
  • 您是否尝试过jstack 来查看问题出在哪里?
  • 当我遇到性能问题时,我更喜欢jvisualvm

标签: java streaming


【解决方案1】:

您应该将 BufferedReader 附加到请求的输入流中,但我发现很难相信您标题中的陈述。

【讨论】:

    【解决方案2】:

    我很确定打印语句是高 CPU 负载的原因。如果删除它会发生什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2021-07-09
      • 2019-06-19
      相关资源
      最近更新 更多