类在实例化之前是否占有内存

时间:2008-06-19 20:58:08   来源:论坛整理  作者:  编辑:chinaitzhe
首先我要问的是静态方法或静态变量在实例话之前是否占用内存?答案应该是肯定占的吧。这个静态方法或静态变量肯定是类的成员吧,可不可以这样说类在实例话之前是占内存的啊?(可能有点较真,但怎么解释才合理呢)谢谢 :)
网友回复:并不占用,这么说的唯一根据是我有时候使用没有实例的类的时候,JDK不对源程序中的这个类进行检测
网友回复:
引用 1 楼 Don_Juan 的回复:
并不占用,这么说的唯一根据是我有时候使用没有实例的类的时候,JDK不对源程序中的这个类进行检测

网友回复:我也想知道这些概念的问题
我觉得可能占用
要不然静态修饰符为什么就可以不被实例化,假如不占内存怎么调用呢
网友回复:当然占用,不然怎么调用
网友回复:假如这个类已经被jvm加载的话,那它肯定就占内存,比如有的类提供的全是静态方法,使用并不需要实例化,
但是在内存中还是给它分配了一些内存,用来存放方法及静态字段。
网友回复:331032003060@201
肯定占用.
我们定义一个正常的类,假如其中没有static的或是final修饰的,假如此类没有被实例化的话,它就没有占内存,即没有在堆内存中划分区域给它.
而static修饰的,它随类的加载而加载,被static修饰的类或变量优先于类加载,所以会在堆内存中划分区域,即占用了内存!

有其它说法的请直接拿玉来砸.谢谢.
网友回复:类一旦加载,就会占用内存(否则加载啥),实例化,是将其在堆里面复制了一份(一般是属性),然后返回给用户
网友回复:类在被装载的时候是占用资源的,确切的说就是:classloader在装载类的时候会生成一个Class <T>对象,占资源的是这个对象。类是一个抽象的概念,因此不会占资源,具体的事务才会占用。静态变量所占的资源在Class <T>对象中分配。
网友回复:只要实例化就必定占用内存
网友回复:不管是静态的还是类被new了,假如有被jvm装载都是有占内存的。
网友回复:占用方法区内存,而且值得一说的是只声明引用同样占用内存,比如String s,没给s附任何值,占用常量池得内存。
网友回复:我觉得8楼说的有道理.不能单纯说类占不占内存,类只是个抽象概念,只有类装载时才占用内存,假如一个类中含有静态成员或静态方法则此类就会加载,就会占用内存,反之则不占.所以说类占不占内存这么问本身就有问题,大家说呢,谢谢大家的建议和回答.
网友回复:此回复为自动发出,仅用于显示而已,并无任何其他非凡作用
楼主截止到2008-06-19 20:27:59的汇总数据:
注册日期:2007-7-18
上次登录:2008-6-19
发帖数:1
结贴数:0
结贴率: 0.00%
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
关键字:实例,之前,是否,占有,内存,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面