/**
* VM Args:-XX:+PrintGCDetails
*/
public class ReferenceCountingGC {
public Object instance = null;
private static final int _1MB = 1024*1024;
/**
* 这个成员属性的唯一意义就是占点内存,以便能在GC日志中看清楚是否被回收过
*/
private byte[] bigSize = new byte[2*_1MB];
public static void testGc(){
ReferenceCountingGC objA = new ReferenceCountingGC();
ReferenceCountingGC objB = new ReferenceCountingGC();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
System.gc();
}
public static void main(String[] args) {
ReferenceCountingGC.testGc();
}
}
运行结果:
[GC [PSYoungGen: 6759K->712K(38400K)] 6759K->712K(124928K), 0.0011986 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC [PSYoungGen: 712K->0K(38400K)] [ParOldGen: 0K->610K(86528K)] 712K->610K(124928K) [PSPermGen: 2910K->2909K(21504K)], 0.0099723 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
Heap
PSYoungGen total 38400K, used 2330K [0x00000007d5c00000, 0x00000007d8680000, 0x0000000800000000)
eden space 33280K, 7% used [0x00000007d5c00000,0x00000007d5e46810,0x00000007d7c80000)
from space 5120K, 0% used [0x00000007d7c80000,0x00000007d7c80000,0x00000007d8180000)
to space 5120K, 0% used [0x00000007d8180000,0x00000007d8180000,0x00000007d8680000)
ParOldGen total 86528K, used 610K [0x0000000781400000, 0x0000000786880000, 0x00000007d5c00000)
object space 86528K, 0% used [0x0000000781400000,0x0000000781498b00,0x0000000786880000)
PSPermGen total 21504K, used 2927K [0x000000077c200000, 0x000000077d700000, 0x0000000781400000)
object space 21504K, 13% used [0x000000077c200000,0x000000077c4dbf70,0x000000077d700000)
无论用引用计数算法判断对象的引用数量,还是可达性分析算法判断引用链是否可达,都需要判断对象的引用。JDK1.2后,将引用分为四类:强引用(Strong Reference),软引用(SoftReference),弱引用(WeakReference),虚引用(PhantomReference)。这四种引用强度依次减弱。 强引用:普通的引用方法。例如new一个对象,Object obj = new Object();只有在这种引用关系失效的时候,GC才会考虑回收这个对象。 测试代码:
/**
* VM args:-XX:+PrintGCDetails -XX:+PrintAssembly
*/
public class StrongReferenceTest {
public static void main(String[] args) {
Object referent = new Object();
/**
* 通过赋值创建strongReference,此时new Object对象同事被两个变量引用到
*/
Object strongReference = referent;
System.out.println(referent);
System.out.println(referent.equals(strongReference));
referent = null;
System.gc();
System.out.println(strongReference);
}
}
测试结果:
java.lang.Object@4b1210ee
true
[Full GC (System.gc()) [Tenured: 0K->712K(87424K), 0.0029994 secs] 2795K->712K(126720K), [Metaspace: 3210K->3210K(1056768K)], 0.0030517 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
java.lang.Object@4b1210ee
Heap
def new generation total 39424K, used 1754K [0x0000000081400000, 0x0000000083ec0000, 0x00000000ab800000)
eden space 35072K, 5% used [0x0000000081400000, 0x00000000815b6850, 0x0000000083640000)
from space 4352K, 0% used [0x0000000083640000, 0x0000000083640000, 0x0000000083a80000)
to space 4352K, 0% used [0x0000000083a80000, 0x0000000083a80000, 0x0000000083ec0000)
tenured generation total 87424K, used 712K [0x00000000ab800000, 0x00000000b0d60000, 0x0000000100000000)
the space 87424K, 0% used [0x00000000ab800000, 0x00000000ab8b2078, 0x00000000ab8b2200, 0x00000000b0d60000)
Metaspace used 3232K, capacity 4494K, committed 4864K, reserved 1056768K
class space used 354K, capacity 386K, committed 512K, reserved 1048576K
/**
* VM args:-XX:+PrintGCDetails
*/
public class SoftReferenceTest {
public static void main(String[] args) {
Object referent = new Object();
/**
* 通过赋值创建softReference
*/
SoftReference
18058一年的第几天时间限制:1000MS内存限制:65535K提交次数:0通过次数:0题型:填空题语言:G++;GCC;VCDescription定义一个结构体类型表示日期类型(包括年、月、日)。程序中定义一个日期类型的变量,输入该日期的年、月、日,计算并输出该日期是一年的第几天。#include struct DATE { _______________________ }; int da
本文首先介绍下MongoDB的基本的增删改查操作,然后,详细介绍MongoDB提供的修改器,以完成各种各样的文档更新操作 MongoDB的主要操作
show dbs 显示当前用户能看到哪些数据库
use foobar 将数据库切换到foobar
show collections 显示当前数据库有哪些集合
db.people.update,update不带参数,可
The alert log is a chronological log of messages and errors, and includes the following items:
All internal errors (ORA-00600), block corruption errors (ORA-01578), and deadlock errors (ORA-00060)
由于几年前写了几篇 CAS 系列的文章,之后陆续有人参照文章去实现,可都遇到了各种问题,同时经常或多或少的收到不少人的求助。现在这时特此说明几点:
1. 那些文章发表于好几年前了,CAS 已经更新几个很多版本了,由于近年已经没有做该领域方面的事情,所有文章也没有持续更新。
2. 文章只是提供思路,尽管 CAS 版本已经发生变化,但原理和流程仍然一致。最重要的是明白原理,然后
lesson 课
traffic 交通
matter 要紧;事物
happy 快乐的,幸福的
second 第二的
idea 主意;想法;意见
mean 意味着
important 重要的,重大的
never 从来,决不
afraid 害怕 的
fifth 第五的
hometown 故乡,家乡
discuss 讨论;议论
east 东方的
agree 同意;赞成
bo
这次看下spring中少见的注解@primary注解,例子
@Component
public class MetalSinger implements Singer{
@Override
public String sing(String lyrics) {
return "I am singing with DIO voice