随笔分类 - JVM
摘要:1 先谈Finalize() finalize()能做的所有工作,使用try-finally或者其他方式都可以做得更好、更及时,所以笔者建议大家完全可以忘掉Java语言中有这个方法的存在。 ——《深入理解JVM》 finalize()方法确实可以实现一次对象的自救,但是其不确定性和昂贵的运行代价都表
阅读全文
摘要:1、Dead Or Alive 我们都知道对象死亡的时候需要进行垃圾回收来回收这些对象从而释放空间,那么什么样的对象算是死亡呢,有哪些方法可以找出内存中的死亡对象呢?一般来说,我们可以这样认为:如果内存中不存在对当前对象的引用,则此对象一定是死亡状态;但是死亡状态的对象并不一定没有其他对象进行引用(
阅读全文
摘要:1. 指令重排序 指令重排序分为三种,分别为编译器优化重排序、指令级并行重排序、内存系统重排序。如图所示,后面两种为处理器级别(即为硬件层面)。 编译器优化重排序:编译器在不改变程序执行结果的情况下,为了提升效率,对指令进行乱序的编译。例如在代码中A操作需要获取其他资源而进入等待的状态,而A操作后面
阅读全文
摘要:本文的内存模型只写虚拟机内存模型,物理机的不予描述。 一、先谈Java的运行时区域(非内存模型) 在Java(1.8版本之前,更准确的是1.7版本之前,因为1.7的时候常量池已经被移到堆中了)中,虚拟机将运行时区域分成6种,如图: 程序计数器:用来记录当前线程执行到哪一步操作。在多线程轮换的模式中,
阅读全文

浙公网安备 33010602011771号