【问题标题】:Java - Converting bytes to megabytesJava - 将字节转换为兆字节
【发布时间】:2018-06-24 17:57:07
【问题描述】:

我这里有以下代码:

long memoryUsedOnStartup = Runtime.getRuntime().totalMemory() -
Runtime.getRuntime().freeMemory();

我在我的程序中将它用于一些统计数据,但这会以千字节为单位返回。有什么可靠的方法可以将其转换为兆字节?

编辑:它以字节为单位返回,但我仍然需要以兆字节为单位...

【问题讨论】:

  • 多少千字节到一兆字节? (提示,不是 1000 :P)
  • 1024... 所以乘以/除以 1024?对不起,如果答案很明显,我的数学很糟糕。
  • @Logan 1MB = 1024KB。这意味着要将 KB 转换为 MB,您需要将 KB 数除以 1024。
  • 我得到的是以字节为单位的内存,然后我将它除以 1024 两次,这似乎给了我正确的数量。我会以这个作为答案。
  • 函数不返回字节吗?

标签: java math memory


【解决方案1】:
private static final long  MB = 1024L * 1024L;

 public static long KBToMB(long KB) 
 {
    return KB / MB;
 }

【讨论】:

  • 这不是正确的方法。用一些实际值检查这一点。除此之外,您不应将函数名和 KB 大写
【解决方案2】:

1 千字节 (KB) -> 2^10 = 1,024 字节

1 兆字节 (MB) -> 2^20 = 1,048,576 字节 = 1,024 千字节 (KB)

public long freeMemory()

返回:当前内存总量的近似值 可用于将来分配的对象,以字节为单位。

public long totalMemory()

返回:当前可用的内存总量 和未来的对象,以字节为单位。

因此,当您计算 memoryUsedOnStartup 时,它以字节为单位。如果你想得到Megabytes的结果,那么你需要将它除以(1024 * 1024)

【讨论】: