java - 内存管理和 Java 堆
问题描述
-Xmx
在 Java 中,您可以通过向JVM提供参数来设置最大应用程序堆大小。假设它是1GB。我认为从您启动应用程序时就给您 1GB,以便应用程序可以在该区域创建对象。但后来我读到了自适应尺寸技术:
当 JVM 尝试根据其策略和调整找到最佳性能时,堆、代和幸存者空间的大小可能会在执行过程中发生变化。
现在,我迷路了。我不知道 JVM 默认会调整堆大小。您能否解释一下(或提供可能涵盖它的有用资源的链接)JVM 在执行期间如何调整堆大小?
解决方案
您设置的是允许分配 JVM的最大堆大小。它通常从较小的大小开始并且仅根据需要增长(即使在垃圾收集之后仅重新使用现有内存也不够用),最近的 JVM 版本还通过在看起来合适的时候缩小堆来给操作系统回馈空间(例如,在工作时间的一段重负荷结束后)。
推荐阅读
- react-native - React Native AsyncStorage 可以用来永久存储数据吗?
- android - 为什么我不能通过 android:theme 更改hintTextAppearance?
- c# - 如何使用 c# 在 mongodb 中批量插入和更新记录
- wordpress - 如何以编程方式将模式代码插入到 wordpress 中,以便它自动适用于目标帖子类型
- spring-cloud-stream - 如何使 Spring Cloud Stream 中流中未处理异常的控制台输出静音?
- python - 如何确认一个文件中的某些子字符串是否包含在另一个文件中?
- r - 使用wellPanel时为闪亮的数据表添加滚动条
- ruby-on-rails - 如何使用 minimagick 编辑上传的图像,该图像被上传到 active_storage?
- c++ - 我是否需要使用 Gstreamer 构建 OpenCV 才能在 OpenCV 中使用 Gstreamer
- javascript - 如何验证角度 6 中的多维数组值?