我正在尝试理解java垃圾收集。垃圾收集中有四个测量提到here:
足迹是一个过程的工作集,以页面和缓存行来衡量。在具有有限物理内存或许多进程的系统上,占用空间可能会影响可伸缩性。
我能理解其他三个,但究竟是什么Footprint
以及如何优化它?
内存占用量是指程序在运行时使用或引用的主内存量。较大的程序具有更大的内存占用量。应用程序的内存占用量大致与其加载的共享库或类的数量和大小成比例,而静态库,可执行程序和静态数据区域对固定(常量)部分有贡献。程序本身通常不会将最大部分贡献给自己的内存占用。在Java程序中,内存占用主要由Java虚拟机(JVM)本身形式的运行时环境组成,在Java应用程序启动时间接加载。
占用空间是进程分配的内存量。
优化它意味着在内存中存储更少的东西更少的时间(不要加载你不需要的东西,尽快释放内存,即不要继续引用不再使用的变量)。
减少占用空间可能会带来CPU或其他IO的额外开销(内存可以比文件系统或网络快速访问)。
您还可以通过限制分配的最大内存量(-Xmx JVM选项)来减少整个Java进程脚本,但是使用少量内存将触发更多(更频繁和更长时间)的垃圾收集器调用,因此将使用更多的CPU)。
减少占用空间的一个很好的例子是使用拉解析器(通过chunck解析树块)而不是DOM(在内存中加载整个树来处理它)来处理XML树。