计算Java对象占用的内存
2008-04-21 23:02
405 查看
今天验证了个曾困惑我一段时间的小问题,代码简单不做过多介绍了
public class Test {
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();
}
}
public static void main(String[] args) throws Exception {
System.out.println(Test.usedMemory());
for (int i = 0; i < 1000; i++) {
A a = new A();
//B b = new B();
}
System.out.println(Test.usedMemory());
Test.runGC();
System.out.println(Test.usedMemory());
}
}
class A {
private String a;
private String b;
private String c;
private String d;
private String e;
private String f;
private String g;
private String h;
private String i;
private String j;
}
class B {
private String a;
private String b;
private String c;
private String d;
private String e;
private String f;
private String g;
private String h;
private String i;
private String j;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public String getD() {
return d;
}
public void setD(String d) {
this.d = d;
}
public String getE() {
return e;
}
public void setE(String e) {
this.e = e;
}
public String getF() {
return f;
}
public void setF(String f) {
this.f = f;
}
public String getG() {
return g;
}
public void setG(String g) {
this.g = g;
}
public String getH() {
return h;
}
public void setH(String h) {
this.h = h;
}
public String getI() {
return i;
}
public void setI(String i) {
this.i = i;
}
public String getJ() {
return j;
}
public void setJ(String j) {
this.j = j;
}
}
执行了n次结果如下
a结果
201640
245512
136040或136200
b结果
201640
247192
136200
public class Test {
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();
}
}
public static void main(String[] args) throws Exception {
System.out.println(Test.usedMemory());
for (int i = 0; i < 1000; i++) {
A a = new A();
//B b = new B();
}
System.out.println(Test.usedMemory());
Test.runGC();
System.out.println(Test.usedMemory());
}
}
class A {
private String a;
private String b;
private String c;
private String d;
private String e;
private String f;
private String g;
private String h;
private String i;
private String j;
}
class B {
private String a;
private String b;
private String c;
private String d;
private String e;
private String f;
private String g;
private String h;
private String i;
private String j;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public String getD() {
return d;
}
public void setD(String d) {
this.d = d;
}
public String getE() {
return e;
}
public void setE(String e) {
this.e = e;
}
public String getF() {
return f;
}
public void setF(String f) {
this.f = f;
}
public String getG() {
return g;
}
public void setG(String g) {
this.g = g;
}
public String getH() {
return h;
}
public void setH(String h) {
this.h = h;
}
public String getI() {
return i;
}
public void setI(String i) {
this.i = i;
}
public String getJ() {
return j;
}
public void setJ(String j) {
this.j = j;
}
}
执行了n次结果如下
a结果
201640
245512
136040或136200
b结果
201640
247192
136200
相关文章推荐
- JAVA内存使用--如何计算一个Java对象占用的字节数
- java对象占用内存大小计算方法
- 如何计算java对象占用的内存
- 如何计算java对象占用的内存
- JAVA内存使用--如何计算一个Java对象占用的字节数
- JAVA内存使用--如何计算一个Java对象占用的字节数
- Java中对象占用内存计算方法
- Java计算一个对象占用内存的大小
- java对象的内存布局(一):计算java对象占用的内存空间以及java object layout
- 【JAVA内存】如何计算一个Java对象占用的字节数
- java对象内存占用计算
- JAVA内存使用--如何计算一个Java对象占用的字节数
- Java计算一个对象占用内存的大小
- java计算内存大小 java计算对象占用内存大小
- 精确计算一个Java对象占用的内存大小
- java对象占用内存大小计算方式
- Java如何计算某个对象占用的内存数
- 如何计算java对象占用的内存
- JAVA内存使用--如何计算一个Java对象占用的字节数
- 计算Java对象在内存中占用空间