我目前正在开发一款2D java游戏,它利用了一个用于在特定磁贴上渲染数据的linkhashmap。当我序列化包含它的类对象以及用于地图渲染的一些其他非瞬态对象时,输出的文件只有4kb的大小。根据我的理解,RAM的使用取决于从中读取的内容的大小,但显然我从一个小于4kb的文件中读取了最多20%的内存。这让我相信我对RAM如何工作的理解是错误的,或者我错过了一些给我带来不良RAM读数的东西。
RAM分析方法
usedPercent = (double) (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / Runtime.getRuntime().maxMemory();
答案 0 :(得分:4)
您缺少的是Java Runtime Environment抓取内存来自行管理,这包括类路径加载,实习缓存,进程空间,堆栈和堆和permgen空间。
基本上,作为Java开发人员,您不负责内存管理,Java不提供使您能够执行内存管理的工具。