当前位置: 首页 > Java > 正文

java问题集锦(三)

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

请问下面的代码运行时会输出什么?

1
2
3
4
5
6
7
8
9
10
11
12
public class A{
    public static void main(String[] args){
        System.out.println(B.NAME);
    }
}
 
public class B{
    public static final String NAME="bluedavy";
    static{
        System.out.println("hellojava");
    }
}

正确答案是:bluedavy,如果B.NAME对应的是一个B中的static方法,那么static块中的代码会先执行,因此如果B的代码是:

1
2
3
4
5
6
7
8
9
public class B{
    public static final String NAME=getName();
    private static String getName(){
        return "bluedavy";
    }
    static{
        System.out.println("hellojava");
    }
}

那么那道题输出的就会是
hellojava
bluedavy

问:记得你之前说过cms gc更适用于64 bit系统,原因是?

答:其实原因是32 bit的系统上,例如linux单个进程最多用3g的空间,在3g这种heap大小的情况下,cms gc压根就没任何优势,ParallelOldGC就OK了,因此说了上面这话,不过即使是64 bit其实也需要看heap size多大,我的建议是在可接受的fgc暂停时间的情况下,都不应该选cms gc,cms gc实现的复杂度(这和它的目标有关系)决定了它的稳定性很难和Parallel GC去比,另外cms gc的碎片问题绝对是让人头疼的问题。

问:OutOfMemoryError: requested …bytes for Chunk::new. Out of swap space,这个能做个专题么?

答:简单来说,造成这个的可能原因是地址空间耗尽(64 bit上基本不可能),另外一个就真的是内存耗尽。

本文固定链接: http://www.chepoo.com/java-problem-three.html | IT技术精华网

java问题集锦(三):等您坐沙发呢!

发表评论