随笔分类 -  jvm

摘要:finalize是在对象回收前做一些清扫工作,以及可清理栈上的内存,比如调用本地方法可能在栈上创建对象。即使对象不可达,也并不是非死不可,还是可以抢救一下,当一个对象没有与GCroot相连的引用链时,它将被第一次标记,然后判断对象是否有必要执行finalize()方法。当对象没有覆盖finalize 阅读全文
posted @ 2017-04-28 23:31 konami 阅读(3150) 评论(0) 推荐(0)
摘要:有这样一类对象:当内存空间还足够,则可保留在内存中;如果内存空间在gc之后还是非常紧张,则可抛弃这些对象。很多系统的缓存功能适合这样的场景,所以jdk1.2以后 java将引用分为了强引用、软引用、弱引用、虚引用四种,引用强度一次减弱。 强引用:类似Object a=new Object()这类,永 阅读全文
posted @ 2017-04-28 23:29 konami 阅读(4426) 评论(0) 推荐(0)
摘要:1、遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类如果没初始化就会被初始化,创建对象,读取或设置静态字段,调用静态方法。 2、反射 3、子类初始化前会先初始化父类 4、包含main方法的类,虚拟机启动时会先初始化该类 5、使用jdk的动态语言支持时 阅读全文
posted @ 2017-04-26 00:04 konami 阅读(1150) 评论(0) 推荐(0)
摘要:GC(或Minor GC):收集 生命周期短的区域(Young area)。 Full GC (或Major GC):收集生命周期短的区域(Young area)和生命周期比较长的区域(Old area)对整个堆进行垃圾收集。 他们的收集算法不同,所以使用的时间也不同。 Minor GC后,Eden 阅读全文
posted @ 2017-04-24 23:57 konami 阅读(7688) 评论(1) 推荐(0)
摘要:当虚拟机遇到一条new指令以后,首先会去检测这个指令的参数能否在常量池中定位到一个类的符号引用,并检测这个类是否被加载、解析、初始化过,没有就先去加载类。 对象创建在堆划分空间可用指针碰撞(使用过的内存放一边未使用的放一边)和空闲列表,划分空间时可能会出现线程不安全的情况#,所以分配内存的时候采用 阅读全文
posted @ 2017-04-21 23:07 konami 阅读(586) 评论(0) 推荐(0)