了解java中的内存使用概念

Sub*_*med 2 java memory runtime xml-parsing

我编写了一个小程序来解析java中的XML(SAX解析器)文件,只是为了检查我的程序消耗了多少内存.我在循环中添加了以下代码行.

System.out.println(Runtime.getRuntime().maxMemory()-Runtime.getRuntime().freeMemory()+" = used memory");
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

  <CATALOG>
243919216 = used memory
    <CD>
243919216 = used memory
      <TITLE>
243919216 = used memory
      <ARTIST>
243919216 = used memory
      <COUNTRY>
243919216 = used memory
      <COMPANY>
243919216 = used memory
      <PRICE>
243919216 = used memory
      <YEAR>
243919216 = used memory
Run Code Online (Sandbox Code Playgroud)

由于我是这些记忆概念的新手,我想知道:

  • 此输出的单位是多少(243919216 =已用内存)?
  • 应用程序的最佳消耗内存是多少?
  • 这是检查内存使用情况的正确方法吗?

The*_*ind 5

  1. 此输出的单位是多少(243919216 =已用内存)?

它是一个给出字节数的long

  1. 应用程序的最佳消耗内存是多少?

答案因应用程序而异.

  1. 这是检查内存使用情况的正确方法吗?

不.这不能给你正确的答案.使用分析器获取此信息.您可能还需要更换maxMemory()totalMemory()得到一个有点接近实际的答案.