java中的main方法中,如果我去实例化自己本身,会不会内存泄露,求高手!
展开全部
main方法是静态的,在你的类被JVA加载时就已经存在了,而且方法并不会随着你的对象的产生而增加,方法是类的而不是对象的,只有非静态的成员才属于对象。
如果你的 main方法里面new自己他会为你这个对象分配空间,但是你的对象中的所有方法在内存中的代码区,并不会随着你的对象增加而增加,和静态成员一样,有且仅有一份,为所有对象所共用。
如果你的 main方法里面new自己他会为你这个对象分配空间,但是你的对象中的所有方法在内存中的代码区,并不会随着你的对象增加而增加,和静态成员一样,有且仅有一份,为所有对象所共用。
追问
但是你的对象中的所有方法在内存中的代码区,并不会随着你的对象增加而增加,
我说的是对象本身,没有说他的方法,你说的好像所有对象都是指向同一块内存一样,好像单例,
我说的是静态方法中实例化本身这个对象,这个对象的内存空间会不会泄露。
追答
静态的永远只会有一个,就像静态成员一样,它会被这个类里面的成员所共用也能通过类名.成员名使用。就算你通过这个方法去实例化这个类所在对象本身也一样只会有一个这样的方法。只有一个一直存在的,而且你在里面产生对象也只会产生一个本实例的对象因为方法只有一个而且一直存在着不会释放里面的对象也不会在你第二次调用的时候去产生新的这个对象除非你在方法内部将其进行处理使其变成没有指向的对象这样才会被JVM回收否则则不会被回收掉,如果按照你的那种思维,是不是觉得递归也会内存泄漏呢,当然这个和递归不同,只是感觉有些类似?
展开全部
不会,main函数是,static的 ,不会因为实例类,而开辟空间,你多虑了。欢迎追问。
追问
我在main里面new自己本身不会开辟空间?
追答
不会,
static 的 变量和函数 是属于 类的,和对象没关系,
当你new 的时候只会 开辟空间存储类 中的非静态 数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会,static的怎么能实例化出来呢
追问
你的意思是实例化他自己本身是不可能的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询