如何知道线程占用了多少内存,或者问题可以扩展到一个对象实例占用了多少内存?
由单例的RunTime类可以知道虚拟机环境里的占用内存总量,剩余多少内存.但是如果能够监控某个实例内存占用量无疑对优化系统有巨大的好处.
由单例的RunTime类可以知道虚拟机环境里的占用内存总量,剩余多少内存.但是如果能够监控某个实例内存占用量无疑对优化系统有巨大的好处.
解决方案 »
- 搞Java的前途,欢迎来讨论
- 关于 equals方法 一个小疑问!
- File是如何访问硬盘的
- 各位大侠帮帮忙啊~~~急!!
- java对数据库进行模糊查询
- 一个sourceStr.replaceFirst(regStr,repStr)的问题,返回“Illegal Group Reference”异常,请大虾帮忙!
- 能不呢把一个list集合直接放入一个map中?如果不能需要怎么转换?
- 请问如何获取不同类型的随机数。用什么方法啊?
- 各位前辈,谁有IBM-JDK1.4.1 ?
- 关于继承和多态的一个问题
- 想从键盘输入一个数值,来控制某个double型的数据小数点后保留的位数,应该怎么写?
- 如何理解文件描述符FILEDESCIPTOR
几次运行均同一结果.
class Ems
{
private String[] strArr;
public Ems()
{
strArr = new String[10000];
for (int i = 0; i < strArr.length; i ++)
strArr[i] = new String("Hello World! i="+i);
}
}public class MemTest
{
public static void main(String[] args)
{
long start,end;
Runtime rt = Runtime.getRuntime();
rt.gc(); // 垃圾回收
start = rt.freeMemory();
System.out.println("start="+start);
Ems ems = new Ems();
end = rt.freeMemory();
System.out.println("end ="+end);
System.out.println("end - start=" + (start - end));
System.out.println("单个String对象占的内存为:"+((start - end)/10000.0));
}
}F:\>javac MemTest.javaF:\>java MemTest
start=1936472
end =762120
end - start=1174352
单个String对象占的内存为:117.4352F:\>java MemTest
start=1936472
end =762120
end - start=1174352
单个String对象占的内存为:117.4352F:\>
yuzl32(Hello!有酒醉)的例子中JVM只main一个线程.到了复杂的系统里就不准确了.我们是否可以对线程内所有基本数据求和得到内存占用的近似值呢?比如 字符串占内存是 str.length*8;整型占内存32b(这由平台决定)。