
jvm
你嘎哈呢
这个作者很懒,什么都没留下…
展开
-
面试JVM(七)对象的创建
对象的创建下图便是 Java 对象的创建过程,我建议最好是能默写出来,并且要掌握每一步在做什么。 ①类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。②分配内存: 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需...转载 2018-12-17 17:17:56 · 157 阅读 · 0 评论 -
面试JVM(六)OOM
OutOfMemoryError异常:目录1:java堆溢出2:虚拟机栈和本地方法栈溢出3:方法区和运行时常量池溢出4:本地直接内存溢出1:java堆溢出要同时满足两个条件:堆大小固定,不可扩展 不断创建对象,并保持对象存活不被回收深入理解java虚拟机原文:Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃...原创 2018-12-17 16:32:00 · 269 阅读 · 0 评论 -
面试JVM(二)垃圾回收
1回收什么?程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行(对象)。垃圾收集(Garbage Collection ,GC) 哪些内存需要回收?什么时候回收?如何回收?判断一个对象是否可回收1. 引用计数算法给对象添加一个引用计数器...原创 2018-06-07 18:00:58 · 335 阅读 · 0 评论 -
面试JVM(一)内存分化
参考书:深入理解java虚拟机 JVM高级特性与最佳实践https://blog.youkuaiyun.com/stanlee_0/article/details/51171382点击打开链接http://www.importnew.com/18961.html点击打开链接 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。其中有些区域随着虚拟机进程的启...原创 2018-06-07 18:03:54 · 303 阅读 · 0 评论 -
面试JVM(五) 指令重排 Happen-Before规则
1:程序顺序原则:一个线程内保证语义的串行性2:volatile规则:volatile变量的写,必先发生于读3:锁规定:一个unLock操作先行发生于后面对同一个锁的lock操作4:传递性:如果操作A先行发生于操作B,而操作B又先行发生于操作C,则可以得出操作A先行发生于操作C5:线程的启动:线程的start()方法先于它的每一个动作6:线程的终结:线程的所有操作先于线程的终结...原创 2018-09-11 20:54:06 · 492 阅读 · 0 评论 -
面试JVM(三)java内存模型JMM
java虚拟机规范视图定义一种java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各个平台下都能达到一致的并发效果。java内存模型主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量包括实例字段,静态字段和构成数组对象的元素。java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存...原创 2018-06-07 18:02:11 · 9463 阅读 · 0 评论