随笔分类 -  JVM-修炼之道

摘要:常量池 Class常量池(class constant pool) 定义:class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池(constant pool table),用于存放编译器生成的各种字面量(Literal)和符号引用(Symbolic Reference 阅读全文
posted @ 2021-06-24 23:12 Flyinglion 阅读(248) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! JVM调优 常见的调优指令 jps 查看应用程序对应的进程id jmap 内存 查看内存信息,实例个数,占用内存的大小等 jmap -histo 27500(可添加 > ./testLog.txt 生成txt到当前目录下) num:序号 instances:实例数量 byte 阅读全文
posted @ 2021-06-17 22:34 Flyinglion 阅读(140) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! HostSpot虚拟机中的垃圾收集器 注:两个收集器之间存在连线,说明其可以搭配使用。特殊说明:CMS备选老年代收集器可以使用Serial Old。 Serial收集器 -XX:+UseSerialGC 简介:Serial收集器是最基本、发展历史最悠久的垃圾收集器,曾是虚拟机 阅读全文
posted @ 2021-06-08 21:25 Flyinglion 阅读(81) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! 基本回收算法 在堆中几乎保存着所有能够想到的对象实例,也就是根据对象存活的周期不同,将内存分为不同的块。 而目前的JVM中处理垃圾收集的方式--几乎都采用的分代收集算法(即**将对象熬过垃圾收集的次数,视为对象的年龄,也依此将对象至少划分为新生代和老年代这两个代**)。 标记 阅读全文
posted @ 2021-06-06 00:14 Flyinglion 阅读(89) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! 具体代码见 --> 字节码解析 javap -verbose xxx.class 反编译 通过16进制查看器打开的文件结构是一个当个字节来显示,因为一个16进制数可以通过4位来表示,一个字节8位可以表示二个16进制数 整体结构分为: class文件结构 类的访问权限 字段表结 阅读全文
posted @ 2021-06-01 22:54 Flyinglion 阅读(60) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! 对象创建 大概流程: 1类加载检查 虚拟机遇到一个new命令时(new指令在语言层次上,代表new关键字,对象的克隆或者序列化等), 首先将要检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过(即类加载那五个步 阅读全文
posted @ 2021-05-31 23:26 Flyinglion 阅读(218) 评论(0) 推荐(0)
摘要:堆 常用: -Xms:JVM初始最小分配的内存由-Xms指定,默认是物理内存的1/64 -Xmx:JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4 新生代: -Xmn:设置年轻代大小 -Xmn2G:设置年轻代大小为2G。 -XX:NewSize设置新生代最小空间大小。 -XX:MaxNew 阅读全文
posted @ 2021-05-27 21:19 Flyinglion 阅读(637) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! 不同的机器对应的JVM处理机器码的方式都不同,如windows、mac系统 javap -c xx.class看汇编c 概念图 栈帧:一个方法对应一块栈帧区域,基本就是数据结构中的栈,特性先进后出,后进先出,符合代码执行特性。 操作数栈:临时的内存空间 验证代码: packa 阅读全文
posted @ 2021-05-24 21:40 Flyinglion 阅读(380) 评论(0) 推荐(0)
摘要:仅以此记录学习笔记等! JVM整体的加载过程 声明周期: JVM伴随Java程序的开始而开始,程序的结束而停止。一个Java程序会开启一个JVM进程,一台计算机上可以运行多个程序,也就可以运行多个JVM进程。 JVM将线程分为两种:守护线程和普通线程。守护线程是JVM自己使用的线程,比如垃圾回收(G 阅读全文
posted @ 2021-05-22 22:07 Flyinglion 阅读(98) 评论(0) 推荐(0)