出于好奇和需要找到代码中的一些潜在问题,我喜欢在Web应用程序运行时跟踪一些常规值,特别是某些对象图的分配内存。我们的应用程序将一些数据永久保存在内存中以保证其可靠性。这可能会累积到几GB的内存,而其他几乎相同的应用程序只分配了一两个GB的内存。
由于需要高性能,我们无法在运行时附加内存分析器。因此,分析对象图以打印出在某些情况下哪些数据部分很大,哪些不太大,会很有帮助,这将有助于更好地理解数据的变化,并潜在地优化应用程序的行为。
对象图意味着从一个确定的对象开始,测量其在内存中的大小,递归地遍历所有引用的对象,包括所有属性、字段、列表及其所有元素等,然后添加它们的相应大小,直到我们获得有关该对象和所有相关对象使用的内存量的信息。
实际上,我想要的答案是:当我释放对这个锚定对象的最后一个引用时,GC能够在下一次清理该对象图时释放多少内存?
对象图意味着从一个确定的对象开始,测量其在内存中的大小,递归地遍历所有引用的对象,包括所有属性、字段、列表及其所有元素等,然后添加它们的相应大小,直到我们获得有关该对象和所有相关对象使用的内存量的信息。
实际上,我想要的答案是:当我释放对这个锚定对象的最后一个引用时,GC能够在下一次清理该对象图时释放多少内存?