我正在开发 SWING 老化应用程序,该应用程序旨在在 jre 1.5 上运行。现在,我将应用程序移植到 JRE 1.7 上运行。
问题在于堆消耗。JRE 5 使用 15 MB 的堆内存,但是当我在 JRE 7 中运行相同的应用程序时,堆使用量约为 24 MB。如果我在任务管理器中看到进程内存;JRE 7 比 JRE 5 多使用 15 MB。这怎么可能?
注: 除 JRE 外没有任何变化。以上是在同一台机器上测试的。操作系统:windows XP(32位)
我正在开发 SWING 老化应用程序,该应用程序旨在在 jre 1.5 上运行。现在,我将应用程序移植到 JRE 1.7 上运行。
问题在于堆消耗。JRE 5 使用 15 MB 的堆内存,但是当我在 JRE 7 中运行相同的应用程序时,堆使用量约为 24 MB。如果我在任务管理器中看到进程内存;JRE 7 比 JRE 5 多使用 15 MB。这怎么可能?
注: 除 JRE 外没有任何变化。以上是在同一台机器上测试的。操作系统:windows XP(32位)
从我在Oracle 的 Java 7 发行说明(查看“RFE:6962931”)中可以读到的内容,interned String 分配在主堆生成中,这可能会对大型应用程序产生影响。
似乎自 Java 6 以来堆大小的确定方式也有所不同,以便利用更快的平台(同一页面,下一点)。
我不确定,但它解释了一切。