我正在尝试理解java垃圾收集。在垃圾收集中有四种度量提到了这里:
内存占用是进程的工作集,以页和缓存行来度量。在物理内存有限或许多进程的系统上,内存占用可能决定可伸缩性。
我可以理解其他三个,但是Footprint到底是什么,以及如何优化它呢?
发布于 2018-02-15 14:12:01
内存占用是指程序在运行时使用或引用的主内存量。较大的程序有更大的内存足迹。应用程序的内存占用量大致与其加载的共享库或类的数量和大小成正比,而静态库、可执行程序和静态数据区域则占固定(常量)部分。程序本身通常不会为自己的记忆足迹贡献最大的部分。在Java程序中,内存占用主要由Java虚拟机( Java Virtual,JVM)本身的运行时环境构成,Java虚拟机在Java应用程序启动时间接加载。
发布于 2018-03-06 10:46:14
内存占用是进程分配的内存量。
优化它意味着在更短的时间内存储更少的东西(不要加载你不需要的东西,尽快释放内存)。不要对不再使用的变量保持引用)。
减少内存占用可能会增加CPU或其他IO中的开销(内存比文件系统或网络访问速度快得多)。
您还可以通过限制分配的最大内存量(-Xmx JVM选项)来减少整个java进程的进度,但是使用很少的内存将触发更多(更频繁和更长)的垃圾回收器调用,因此将使用更多的CPU)。
减少足迹的一个很好的例子是使用拉解析器(用chunck解析树块)来处理XML树,而不是使用DOM (在内存中加载整个树来处理它)。
https://stackoverflow.com/questions/48809234
复制相似问题