【发布时间】:2018-02-15 14:09:07
【问题描述】:
我正在尝试了解 Java 垃圾收集。 here提到的垃圾回收有四个度量:
- 吞吐量
- 暂停
- 足迹
- 及时性
足迹是进程的工作集,以页面和缓存衡量 线。在物理内存有限或进程众多的系统上, 占用空间可能决定可扩展性。
其他三个我可以理解,但是Footprint到底是什么,如何优化呢?
【问题讨论】:
标签: java garbage-collection jvm
我正在尝试了解 Java 垃圾收集。 here提到的垃圾回收有四个度量:
足迹是进程的工作集,以页面和缓存衡量 线。在物理内存有限或进程众多的系统上, 占用空间可能决定可扩展性。
其他三个我可以理解,但是Footprint到底是什么,如何优化呢?
【问题讨论】:
标签: java garbage-collection jvm
足迹是进程分配的内存量。
优化它意味着在内存中存储更少的东西以减少时间(不要加载你不需要的东西,尽快释放内存,即不要保留对不再使用的变量的引用)。
减少占用空间可能会带来额外的 CPU 或其他 IO 开销(内存访问速度比文件系统或网络快得多)。
您还可以通过限制分配的最大内存量(-Xmx JVM 选项)来减少整个 java 进程的占用,但是使用少量内存会触发更多(更频繁和更长)的垃圾收集器调用,因此会使用更多 CPU) .
减少占用空间的一个很好的例子是使用拉式解析器(按块解析树块)而不是 DOM(将整个树加载到内存中来处理它)来处理 XML 树
【讨论】:
内存占用是指程序在运行时使用或引用的主内存量。 较大的程序具有较大的内存占用。应用程序的内存占用大致与其加载的共享库或类的数量和大小成正比,而静态库、可执行程序和静态数据区域占固定(恒定)部分。程序本身通常不会对它们自己的内存占用贡献最大的部分。 在 Java 程序中,内存占用主要由运行时环境组成,其形式为 Java 虚拟机 (JVM) 本身,它在 Java 应用程序启动时间接加载。
【讨论】:
footprint是不是一样的东西?