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

6
假设我有一个Java类,其中包含价值100K的方法代码,但不包含任何变量,只有20个字节的属性。
我从这个类实例化了1000个对象。
我消耗了100,000K的内存吗?还是仅仅100K +(20字节* 1000)?或者完全是其他东西?

1
你可以运行它,并检查任务管理器/或者如果你在Linux上,可以使用top命令。 - Dani
4个回答

10

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


2
以下是关于Java对象内存使用的一般指南:http://www.javamex.com/tutorials/memory/object_memory_usage.shtml
我怀疑方法定义所产生的内存使用将是一个固定的量(可能在类加载时放入permgen空间),而不是与实例数量成比例的。

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

0

尝试使用JDK中的jvisualvm进行附加,并告诉我们您看到了什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接