十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
程序员是无法让System.gc();按照规则调用的,你可以在程序启动过程中写上这段代码,不过至于什么时候调用就要看JVM了.
创新互联建站专业为企业提供望奎网站建设、望奎做网站、望奎网站设计、望奎网站制作等企业网站建设、网页设计与制作、望奎企业网站模板建站服务,10多年望奎做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
不过,觉得你的程序或许应该有地方资源泄漏了吧,假如你的机器是2G内存,一般运行WindowsXP,大概也就用1/4内存,再加上的JVM,1G应该搞定了,剩下的1G,你用来加载信息,个人觉得,如果启动就死是不太可能的,如果运行一段时间,程序写的不完善可能会死掉,个人建议你还是好好看看自己的程序吧,如果确认程序没问题,那就只有加内存了,没有别的办法,光靠JVM的垃圾回收,效果不是很多.
没听说过有命令行能让一个正在运行的程序 gc 的,但 jdk 自带了 jconsole 能连接到本地的 JVM 进程,然后从它的 JMX 方法中找 vm 的 gc 方法。都有界面的,你只需要先连接成功本地的 jvm 进程就可以了。
Java的公有API可以主动调用GC的有两种办法,一个是
System.gc();
// 或者下面,两者等价
Runtime.getRuntime().gc();
还有一个是JMX:
java.lang.management.MemoryMXBean.gc()
作用跟System.gc()也是类似的。
MemoryMXBean.gc()和System.gc()的内部实现都是Runtime.getRuntime().gc(),从效果上说两者一模一样没有区别。
您好,提问者:
我选择1。原因如下:
1、当X[] a = new X[3];这个时候已经在内存中生成了,a的hashCode地址长度3的堆内存。
2、当a[1]=null的时候,其实是把a=1的角标设置为null,其实X[] a = new X[3];a 0 1 2都没有赋值,指向都为null。
补充:就算我们调用了System.gc()方法,JVM线程也不会立马执行,只能起到一个通知JVM回收的作用。