java 回收static,java static GC 回收问题

java static GC 回收问题

1)静态变量本身不会被回收

2)静态变量所引用的对象是可以回收的。

第一点大家应该没有疑问,下面我证明第2点:

看下面的例子及注释。自己可以运行试一下, 注意加上-verbose:gc参数

java -verbose:gc TestStaticGc

// TestStaticGc.java

public class TestStaticGc {

// ia是一个静态变量,在这里它作为一个int数组的引用。

static int[] ia = new int[1024 * 1024];

public static void main(String[] args) {

int i = 0;

// 为了清楚,我用了6次循环,每次都调用System.gc();

// 在第3次循环时,我把ia的引用设为null。

// 如果ia指向的对象能被回收的话,应该有明显的内存减少现象。

do {

if (3 == i++) {

ia = null;

System.out.println("release");

}

System.gc();

} while (i<6);

}

}

现在看结果:

---------- java ----------

// 前两次是每个应用初始化之后都要做的。

[GC 328K->162K(1984K), 0.0043279 secs]

[Full GC 162K->162K(1984K), 0.1501831 secs]

// 下面是调用System.gc()的结果

[Full GC 4267K->4258K(6084K), 0.0234695 secs]  // i =&n

相关文档:

import java.util.Stack;

/**

* JAVA获得一个数组的指定长度的排列组合。

*

* @author JAVA世纪网(java2000.net, laozizhu.com)

*/

public class TestSequenceAll {

public static void main(String[] args) {

TestSequenceAll t = new TestSequenceAll();

Ob ......

细节上需要改进。

import java.util.*;

public class Map {

Vector v = new Vector();

Vector vv = new Vector();

Map() {

int[] array = { 1, 2, 3, 4, 5 };

Scanner s = new Scanner(System.in);

int x = s.nextInt();

pro(array, 0, x);

for(int i=0 ......

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish

)。

Java Collections Framework(JCF)

是Java SE中一个基本的类集,几乎所有的项目都会用到,其中的List

则是JCF中最最常用的一个接口。围绕List

接口,有很多实现,诸如常用的ArrayList

、LinkedList

、Vector

、Stack

, ......

很多朋友在Java开发中,使用Oracle数据库的时候,经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。

实际上,这个错误的原因,主要还是代码问题引起的。

ora-01000: maximum open cursors exceeded.

表示已经达到一个进程打开的最大游标数。

这样的错误很容易出现在Java代码中的主要原因是:Java代码在执 ......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值