代码之家  ›  专栏  ›  技术社区  ›  user697911

将字节转换为GB是否正确?

  •  1
  • user697911  · 技术社区  · 7 年前

    我想检查我的Java应用程序中使用了多少内存,然后我使用:

     System.out.println("Free memory (bytes): " +
                        Runtime.getRuntime().freeMemory()/(1024*1024*1024));
    

    我把字节数转换成了GB。但在google上,它显示一个字节=1e-9gb。哪一个是对的?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Peter Lawrey    7 年前

    jvm总是使用 gibibytes 或1024 ^ 3或 1 << 30 为了清晰起见,应该将其写成gib,但并不总是一致地这样做。

    我建议您选择GB=1000^3或GiB=1024^3,并用结果写出单位,以明确您的意思。我也会显示一些数字的精度,例如。

    System.out.println("Free memory: " +
                       (Runtime.getRuntime().freeMemory() * 1000 >> 30) / 1e3 + 
                       " GiB"));
    

    System.out.println("Free memory: " +
                       (Runtime.getRuntime().freeMemory() / 1_000_000 / 1e3 + 
                       " GB"));
    

    在这两种情况下,它都会显示3位数的精度。

        2
  •  1
  •   Hyun I Kim    7 年前

    这取决于视角。

    从技术上讲,1GB是1024兆字节。

    但从存储器的角度来看,它是以1000兆字节计算的。

    所以这没什么大不了的,你可以选择你要用什么样的视角来表达。