方法密集型Java对象的内存占用量是多少?

时间:2009-12-01 15:05:13

标签: java memory-management

假设我有一个Java类,它有100K的方法代码,包含NO变量,但只有20个字节的属性。

我从这个类中实例化了1000个对象。

我消耗了100,000K的内存吗?或者只有100K +(20bytes * 1000)?还是别的什么呢?

4 个答案:

答案 0 :(得分:10)

加载类本身的内存占用量大致与代码大小相对应,但不会为类的每个实例复制代码。实例只需要与实例属性一样多的内存+管理对象实例本身的一些开销。

答案 1 :(得分:2)

以下是确定Java中对象的内存使用情况的一般指南: http://www.javamex.com/tutorials/memory/object_memory_usage.shtml

我怀疑方法定义产生的内存使用量是固定的,(可能在加载类时放入permgen空间),而不是与实例数成比例。

答案 2 :(得分:0)

您将仅实例化对象的“变量”部分,因此只有属性(我猜这里和那里有几个字节的开销)。你后面的猜测是正确的。

答案 3 :(得分:0)

尝试使用jvisualvm(在JDK中)附加并告诉我们你看到了什么。