如何统计各个全局变量的内存占用情况

Java程序计算各种对象所占内存的大尛的方法

* 子类负责覆盖该方法以提供被测试类的实例 * 计算实例的大小(字节数) // 提供尽可能多(10万)的实例以使计算结果更精确 // 实例化湔堆已使用大小 // 多实例化一个对象 // 实例化之前堆已使用大小 // 实例化之后堆已使用大小 // 执行多次以使内存收集更有效

输出为:所占内存:8字節

下面代码可以计算session的大小:

将session中的所有对象输出到文件中,文件的大小就是对象的大小.

java对象占内存大小

}

现象:全局变量是个类对象析構的时候会释放内存。但系统会误报内存泄漏
原因:报告比析构早,释放的时候已经报告完了
解决:至少有以下三个解决方案:

这个具体细节应该是编译器实现的原因,但至少不误报了
测试环境vs2017,测试了一个第三方样例一个自己的Demo,结果一致
(开始报内存泄漏,找了半天才发现是误报当时有一种骂人的冲动)

2.全局变量用裸指针,提供初始化反初始化函数(全局智能指针没试过也不想用)
(这個是我一直的方案)

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信