Java VM 堆可以变小吗?

标签 java jvm

如果我运行一个 java 程序,VM 最初会为堆分配一些内存,对吗?

每当使用的内存超过可用内存时,堆就会增加,对吗?

一旦使用更少的内存,堆是否有可能变得更小?

谢谢!

最佳答案

是的,如果垃圾收集器在几次收集后发现应用程序对内存的需求远小于配置的堆,那么它可以随意减小堆的大小。您可以在 VisualVM 中观察到此功能,这里是使用 ab 进行压力测试的 Tomcat 实例:

VisualVM memory

如您所见,堆大小(橙色系列)在每次 GC 后基本上都会发生变化(蓝色系列下降)。有时堆大小会增加,有时会减少。 JVM 可以根据实际使用情况自由调整大小(这里总堆大小设置为 1G)。

关于Java VM 堆可以变小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566147/

相关文章:

java - 具有数据库数据内存副本的框架/应用程序

java - Blockhound Gradle : 'You need to add ' -XX:+AllowRedefinitionToAddDeleteMethods' JVM flag.'

java - 在Java中,PrintStream如何最终将文本打印到控制台?

java - 用Fraps记录java

java - 每次关闭终端时都需要进行 Maven 设置

java - SQL 服务器索引

java - Jtable 与 AbstractTableModel 删除所有行

java - Spring 启动 org.hibernate.hql.internal.ast.QuerySyntaxException : Utilisateur is not mapped (with MYSQL)

java - 我如何测量 JVM 启动时间?

jvm - 如何从 Activity 进程中卸载 JVM?