我和我的计算机科学老师讨论了JAVA中的一个课程占用了多少内存。我们俩都不知道具体的答案,但是我有几个他无法回答的问题。
1)它的原始数据类型使用的每个类的字节数是否简单,是决定其内存使用情况的原因?
2)如果创建一个类的实例并将其设置为null,它是否仍会占用与不为null的实例一样多的字节?
3)包含100个字符的String是否具有与单个字符串相同的字节数?
4)如果一个类没有变量,没有方法,没有任何东西,并且看起来像这样:
public class Test{}
它还会占用内存吗?
您在两个不同的事物之间感到困惑:aclass
占用的内存量(元数据或实例的“蓝图”)和ainstance
占用的内存量(数据/对象)。
对于类,您可以使用java.lang.instrument.Instrument.getObjectSize(yourObject.getClass());
,对于实例-它不一定具有固定的大小。例如,如果您有一个实例,Person
并且它有一个name
字段,那么根据字符串的长度,不同的名称将捕获不同的空间。
您可以使用探查器来查看需要多少内存实例,YourKit是一个出色的探查器,但它不是免费的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句