java - 内存使用量变化很快,正常吗?

标签 java memory-management

我只是想知道,内存使用量变化如此之快是否正常。

我运行这个code 这是教程“如何制作一个简单的游戏。”

我在游戏的主循环中添加一些代码:

g.setColor(Color.cyan);
g.drawString(System.currentTimeMillis() + "\n\n/nRAM:[" + (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024 + " MB]", 100, 100);

RAM 使用量在 25-30 之间变化非常快,

我的问题是为什么会发生这种情况?这是错误的行为还是无关紧要?代码是不是写错了?

编辑: 我很怀疑,因为例如这个 video 内存使用情况稳定,而且蕨菜游戏的使用情况保持不变(25mb),直到声音停止播放。

最佳答案

在 Java 中,内存管理由垃圾收集器自动处理。因此,一旦不再需要某个对象(不再有任何引用),它不会立即释放,而是保留在内存中。垃圾收集会时不时地启动并删除不需要的对象(取决于多个因素,例如 JVM 设置、最大堆大小等)。由于这种情况并非每帧都会发生,因此您会看到内存使用量不断攀升,然后随着垃圾回收的发生而突然下降。

关于java - 内存使用量变化很快,正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961110/

相关文章:

java - Grails Unresolved 依赖错误

java - 这个正则表达式是什么意思?

c++ - 如何检查将 free() 与 new [] 一起使用的后果

linux - SD 卡中的精简配置

C 动态内存与堆栈内存变量

java - 在 Activity 的 onDestroy() 中使用 Runtime.getRuntime().gc() 方法是一种好习惯吗?

java - 从 gwt 中的谷歌地图获取位置详细信息

java - swagger-ui.html 停止出现

java - 微调器文本不显示默认值,也不显示所选值

C++重载operator+和动态内存分配