java有一个很好的地方就是java的垃圾收集机制,这个机制集成于jvm的,对程序员来说是隐藏且不透明的。这种情况下,如何得到某个对象消耗的内存呢?
曾经看到过有人用以下方法来计算:在生成该object的前后都调用java.lang.runtime.freememory()方法,然后看两者之差即为该object消耗的内存量。
这种方法的代码是:
long totalmem = java.lang.runtime.freememory();
object mybigobject = null;
system.out.println("you just got rid of " + totalmem - java.lang.runtime.freememory());
private static final runtime s_runtime = runtime.getruntime ();
private static long usedmemory ()
{
return s_runtime.totalmemory () - s_runtime.freememory ();
}
private static void rungc () throws exception
{
long usedmem1 = usedmemory (), usedmem2 = long.max_value;
for (int i = 0; (usedmem1 < usedmem2) && (i < 500); ++ i)
{
s_runtime.runfinalization ();
s_runtime.gc ();
thread.currentthread ().yield ();
usedmem2 = usedmem1;
usedmem1 = usedmemory ();
}
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器