JVM
handsome-h
慈不掌兵,情不立事,义不理财,善不为官。
展开
-
Java内存区域
文章目录概述运行时数据区域程序计数器Java虚拟机栈本地方法栈堆方法区方法区和永久代的关系常用参数为什么将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?运行时常量池直接内存HotSpot虚拟机对象对象的创建类加载检查分配内存初始化零值设置对象头执行init方法对象的内存布局对象的访问定位补充String类和常量池8 种基本类型的包装类和常量池概述对于 Java 程序员来...原创 2019-08-10 14:27:48 · 665 阅读 · 0 评论 -
JVM垃圾回收
文章目录本文主线JVM内存分配和回收对象优先在 eden 区分配大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定对象已经死亡吗?如何判断一个对象已经无效引用计数法可达性分析算法再谈引用强引用软引用弱引用虚引用不可达的对象并非“非死不可”如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法垃圾收集器Serial 收集器ParNe...原创 2019-08-10 19:55:34 · 480 阅读 · 0 评论 -
类文件结构
文章目录概述Class文件结构魔数Class文件版本常量池访问标志当前类索引,父类索引与接口索引集合字段表集合方法表集合属性表集合概述在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java...原创 2019-08-10 20:18:59 · 503 阅读 · 0 评论 -
类加载过程
文章目录概述加载连接验证准备解析初始化概述Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储...原创 2019-08-10 20:34:37 · 483 阅读 · 0 评论 -
类加载器
文章目录概述双亲委派模型介绍实现源码分析好处自定义类加载器概述JVM 中内置了三个重要的 ClassLoader,除了 BootstrapClassLoader, 其他类加载器均由 Java 实现且全部继承自java.lang.ClassLoader:BootstrapClassLoader(启动类加载器) :最顶层的加载类,由C++实现,负责加载 %JAVA_HOME%/lib目录下的j...原创 2019-08-10 20:47:28 · 485 阅读 · 0 评论 -
JDK 监控和故障处理工具总结
文章目录JDK命令行工具jps:查看所有 Java 进程jstat: 监视虚拟机各种运行状态信息jinfo: 实时地查看和调整虚拟机各项参数jmap:生成堆转储快照jhat: 分析 heapdump 文件jstack :生成虚拟机当前时刻的线程快照JDK 可视化分析工具JConsole:Java 监视与管理控制台连接 Jconsole查看 Java 程序概况内存监控线程监控Visual VM:多合...原创 2019-08-10 21:56:59 · 642 阅读 · 0 评论