随笔分类 - JVM
摘要:河北王校长JVM Class文件 文件结构 魔数(Magic Number):class文件的前4个字节是固定的魔数,用于标识文件类型为class文件。魔数的值为0xCAFEBABE。 版本信息:紧随魔数后的4个字节表示class文件的次版本号和主版本号。Java的版本号从45开始,每个新版本增加1
阅读全文
摘要:JVM串讲 知识总结梳理 内存区域: 有逻辑的说出来,各种是干什么的,是否是线程安全的 方法区从Jdk1.8开始的变化,为什么这么设置? 类加载机制 类加载的几步骤,双亲委派模型 类的生命周期 对象的创建过程 对象创建的几步 对象的内存布局 对象的访问方式 如果判断对象是否存活 判断对象是否存活的标
阅读全文
摘要:CMS垃圾回收器 CMS垃圾回收器 如果用Seria和Parallel系列的垃圾收集器:在垃圾回收的时,用户线程都会完全停止,直至垃圾回收结束! CMS的全称:Concurrent Mark Sweep,翻译过来是并发标记清除 用CMS对比上面的垃圾收集器(Seria和Parallel和parNew
阅读全文
摘要:G1垃圾回收器 G1垃圾收集器 CMS垃圾收集器的弊端:会产生内存碎片&&空间需要预留; 这俩个问题在处理的时候,很有可能会导致停顿时间过长,说白了就是CMS的停顿时间是不可预知的 而G1又可以理解为在CMS垃圾收集器上进行”升级”; G1 垃圾收集器可以给你设定一个你希望Stop The Word
阅读全文
摘要:垃圾回收机制 判断对象不再被使用 常用 的算法有两个引用计数法和可达性分析法 引用计数法 引用计数法思路很简单:当对象被引用则+1,但对象引用失败则-1。当计数器为0时,说明对象不再被引用,可以被可回收 引用计数法最明显的缺点就是:如果对象存在循环依赖,那就无法定位该对象是否应该被回收(A依赖B,B
阅读全文
摘要:数组类创建过程 【结论】数组类本身并不是由类加载器负责创建的,而是由JVM直接在内存中动态构造出来的 理解: String[] Student[] Integer[] int[] 【结论】数组不是类加载器创建的而是java虚拟机直接创建的,知道这个结论就可以了,因为数组不属于类 核心就是: 创建数组
阅读全文
摘要:JVM内存结构 学习思路参考 假设我们设计“Java内存结构”,如何做呢: a)、Java程序是多线程的,CPU数量有限,CPU执行线程会有停顿和切换,因此需要有“虚拟机栈”管理线程,另外需要程序计数器保存线程跑到哪个位置了。 b)、然后就是创建Java对象了,Java对象的类结构和常量等信息只需要
阅读全文
摘要:类加载机制 学习思路参考 a)、类加载机制就是把我们编写好的class文件加载到内存模型中,了解这个后面试被问到“能否直接定义java.lang.String”或者“ClassNotFoundException出现在哪一步”就能很快回答上来并说明为什么 b)、类加载机制包括(载(装载) 连接【验证、
阅读全文
摘要:# 垃圾回收算法 ## 学习思路参考 a)、堆中保存着类的对象,因此有垃圾回收算法,否则很快Java程序就OutOfMemory了 b)、堆里面分为新生代和老年代,新生代又分为Eden(伊甸园)和两个Survivor,不同代就有不同的垃圾回收算法,新生代是标记-清除和复制算法,老年代是标记-压缩算法
阅读全文
摘要:JVM内存结构相关问题 [百度Java笔试题] 1、【单选题】下面有关java内存结构的描述,说法错误的是? A.JMM通过控制主内存与每个线程的本地内存之间的交互,来为java程序员提供内存可见性保证 B.“synchronized” — 保证在块开始时都同步主内存的值到工作内存,而块结束时将变量
阅读全文
摘要:JDK 监控和故障处理工具 JDK 命令行工具 jps (JVM Process Status): 类似 UNIX 的 ps 命令。用于查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息; jstat(JVM Statistics Monitoring Tool): 用于收集
阅读全文