重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果你写Person x = new Person()的话就不是垃圾了。所谓的垃圾就是指被引用的次数为零的对象。这种匿名的对象又没人引用他们,所以被创建成果之后就成了垃圾。它们的存在价值就是它们的构造函数被调用了一次。
成都创新互联公司是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括网站设计、成都网站设计、电商网站制作开发、微信小程序、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!
还有,main并不是Person类的构造函数,并不会在创建Person对象时候被调用。它只是程序刚启动时候调用一次。新创建Person类的时候这个main已经不视为什么特殊函数,想再次调用它只可能是你自己手动调用。
java确实垃圾,没效率,跨平台就是个笑话,其实就一个平台jre,连fork都不能用
1、Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。
一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。
2、关键字是GC
当对象为空引用时就会被视为垃圾
你的补充,不会,用下面的程序可以测试
public class Test{
protected void finalize(){
System.out.println("垃圾");
}
public static void main(String args[]){
new Test();
Test t = new Test();
t = null; //t原来指向的那个对象成为空引用了
System.gc(); //会调用finalize()
}
}
垃圾回收就是gc(gabage collection)。
java比c++的优点就是多了垃圾回收机制,程序员不用去关心垃圾的回收,系统会自动调用去回收内存。
一般我们想回收的时候只需要调用system.gc方法就可以了。系统会自己去调用destroy方法和其他的回收方法释放内存,节省内存空间。
垃圾回收目的:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。
由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。
半个小时啊大哥,我用记事本写,不用myeclipse都不需要半个小时额...你太夸张了。你说垃圾那是事实,你可以用字节码写,用汇编,用二进制,主要是java简单,好学,也方便,跨平台。你要用汇编试试,写个helloworld半天,所以不是java垃圾,主要是我们自己太垃圾。