1、如果去掉main方法的static修饰符:程序能正常编译,不能运行
2、下面程序的输出结果:
3、log4j的优先级从高到低的排序为:error>warn>info>debug
4、Integer.MAX_VALUE * 2返回-2,Integer.MIN_VALUE * 2返回0
int最大值和最小值计算
Integer.MAX_VALUE*2
int a = Integer.MAX_VALUE;//2147483647 二进制是:01111111111111111111111111111111
int b = Integer.MIN_VALUE;//-2147483648 二进制是:10000000000000000000000000000000
//true 意思就是01111111111111111111111111111111 + 1 = 10000000000000000000000000000000
// 相当于 2147483647 + 1 = -2147483648
//System.out.println(a+1);
//意思就是2147483647 + 2147483647 = 2147483647 + 1 + 2147483646
// = -2147483648 + 2147483646
// = -2
//System.out.println(a*2);
Integer.MIN_VALUE*2
int a = Integer.MAX_VALUE;//2147483647 二进制是:01111111111111111111111111111111
int b = Integer.MIN_VALUE;//-2147483648 二进制是:10000000000000000000000000000000
//意思就是:10000000000000000000000000000000 - 1 = 01111111111111111111111111111111
//相当于-2147483648 - 1 = 2147483647
//System.out.println(b-1);
//意思就是-2147483648 + (-2147483648) = -2147483648 - 2147483648
// = -2147483648 -1 - 2147483647
// = 2147483647 - 2147483647
// = 0
//System.out.println(b*0);//最小值*偶数 = 0; 最小值*奇数 = 最小值
5、假如某个java进程中JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UserConcMarkSweepGc
-XX:SurvivorRatio=3,请问eden区最终分配的大小是多少?(c)
A:64M
B:500M
C:300M
D:100M
解析:
-Xms1G,初始堆大小为1G
-Xmx2G, 最大堆大小为2G
-Xmn500M , 年轻代大小为500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出
500M*(3/(3+1+1))
=500M*(3/5)
=500M*0.6
=300M
所以Eden区域的大小为300M