随笔分类 - JVM
摘要:JVM 参数类型: 标准: -开头,所有的 HotSpot 都支持 非标准:-X 开头,特定版本 HotSpot 支持特定命令,不能保证所有 JVM 实现都支持它们,并且它们可能会发生变化。 高级选项:-XX 开头,这些是开发人员选项,用于调整 Java HotSpot 虚拟机操作的特定区域,这些区
阅读全文
摘要:Java 程序在运行的时候,主要就是执行字节码指令,一般这些指令会按照顺序解释执行,这种就是解释执行。 那些被频繁调用的代码,比如调用次数很高或者在 for 循环里的那些代码,如果按照解释执行,效率是非常低的。这些代码称为热点代码。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本
阅读全文
摘要:优化策略 内存优化策略 高并发业务场景下,应增加新生代的大小 Minor GC 时间 = T1(扫描新生代)+ T2(复制存活对象) 在 JVM 中,复制对象的成本要远高于扫描成本。如果在堆内存中存在较多的长期存活的对象,此时增加年轻代空间,反而会增加 Minor GC 的时间。如果堆中的短期对象很
阅读全文
摘要:JDK 命令行工具 命令 作用 参数 备注 jps 列出当前机器上正在运行的虚拟机进程,jps 从操作系统的临时目录上去找(所以有一些信息可能显示不全) -q : 仅仅显示进程,-m: 输出主函数传入的参数-l: 输出应用程序主类完整 package 名称或 jar 完整名称.-v: 列出 jvm
阅读全文
摘要:常用参数名称: 符号 作用 E 元素,主要由 Java 集合(Collections)框架使用 K 键,主要用于表示映射中的键的参数类型 V 值,主要用于表示映射中的值的参数类型 N 数字,主要用于表示数字 T S U V 通用型参数 JVM 实现原理 泛型擦除 Java 语言中的泛型,它只在程序源
阅读全文
摘要:方法调用的字节码指令: 字节码指令 作用 invokestatic 调用静态方法 invokespecial 调用私有实例方法、构造器及 super 关键字等 invokevirtual 调用非私有实例方法,比如 public 和 protected invokeinterface 和上面这条指令类
阅读全文
摘要:类的生命周期 加载(Loading) 交给虚拟机的具体实现来自由把控,大多数都是懒加载 没有指定一定得从某个 class 文件中获取 通过一个类的全限定名来获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的 java.lang.Cl
阅读全文
摘要:字节码指令属于方法表中的内容。Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于限制了 Java 虚拟机操作码的长度为一个字节(即0~255),这意味着指令集的操作码总数
阅读全文
摘要:反汇编:javap -c xxxx.class 使用 -v 可以多打印一些信息 Java 技术能够一直保持非常好的向后兼容性,这点 Class 文件结构的稳定性功不可没。class 文件结构的内容,绝大部分在 JDK1.2 时代就已经定义好了。每次基本上只是在原有结构基础上新增内容、扩充功能,并未对
阅读全文
摘要:垃圾回收机制 分代回收理论 新生代:绝大部分的对象都是朝生夕死 老年代:熬过多次垃圾回收的对象就越难回收 GC 分类 新生代回收(Minor GC/Young GC) 老年代回收(Major GC/Old GC) 只有 CMS 垃圾回收器会有这个单独的回收老年代的行为 Major GC 有说指是老年
阅读全文
摘要:JVM 的两大特性: 跨平台性 跨语言性:只识别 class 文件 JVM、JRE、JDK 的关系: 常见的 JVM 实现: JVM Hotspot 目前使用的最多的 Java 虚拟机 Jrocket 原属 BEA 公司,曾号称世界上最快的 JVM,后被 Oracle 公司收购,合并于 Hotspo
阅读全文
摘要:内存模型 方法区(Method Area) 假如两个线程都试图访问方法区中的同一个类信息,而这个类还没有装入 JVM,那么此时就只允许一个线程去加载它,另一个线程必须等待。方法区是 JVM 对内存的”逻辑划分”,在 HotSpot 虚拟机中:JDK1.7 及之前 ,使用永久代; JDK1.8 及以后
阅读全文

浙公网安备 33010602011771号