个人简介

Echo Blog


江湖无名 安心练剑
  • JVM-11-字节码类加载实战
    类加载 OSGI 学习类加载机制 jboss 源码学习 JEE 标准 Tomcat 学习经典的类加载机制 动态字节码 以前使用 spring aop 最多使用的就是动态代理和动态字节码。 CBLIB AMS 不同 jdk 版本之间的转换 Retrotranslator 可以将 1.5 版本的 jdk 转换为以前的 jdk 版本。 参考资料 《深入理解 jvm》 ...
    2018-10-08 08:04:16 | JVM
  • JVM-10-虚拟机字节码执行引擎
    Java虚拟机的执行引擎 输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。 本章主要是从概念模型的角度讲解虚拟机的方法调用和字节码执行。 帧栈 帧栈是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。 每一个帧栈中都包括以下信息:局部变量表(Local Varable Table)、操作数栈(Operand Stack...
    2018-10-08 08:04:16 | JVM
  • JVM-09-classloader
    ClassLoader 官方概念,看一下即可。 类定义 public abstract class ClassLoader extends Object 概念 类装入器是负责装入类的对象。类类装入器是一个抽象类。给定类的二进制名称,类装入器应该尝试定位或生成构成类定义的数据。 典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的“类文件”。 每个类对象都包含对定义它的...
    2018-10-08 08:04:16 | JVM
  • JVM-08-bytecode
    Bytecode 字节码指令 jvm 内部细节 本文分为三部分,每一部分都分成几个小节。 每个小节都可以单独阅读,不过由于一些概念是逐步建立起来的,如果你依次阅读完所有章节会更简单一些。 每一节都会覆盖到Java代码中的不同结构,并详细介绍了它们是如何编译并执行的。 变量 局部变量 JVM是一个基于栈的架构。方法执行的时候(包括main方法),在栈上会分配一个新的帧,这个栈帧包...
    2018-10-08 08:04:16 | Java
  • JVM-07-class file
    class 文件查看 java 代码 package com.github.houbb.jvm.learn; public class Main { public static void main(String[] args) { System.out.println("hello jvm"); } } 编译后参看文件 >javap -v...
    2018-10-08 08:04:16 | Java
  • JVM-06-jdk 命令行工具,jdk 可视化工具
    jdk 自带工具 在 java 安装目录 bin 下。 你可以看到对应的信息,这里有很多 java 为我们提供的工具。 $ ls appletviewer.exe* java-rmi.exe* javap.exe* jdb.exe* jmap.exe* jstack.exe* klist.exe* poli...
    2018-10-08 08:04:16 | Java
  • JVM-05-class load
    一道题目引发的血案 首先看一道题目。 题目 Singleton.java public class Singleton { private static Singleton singleton = new Singleton(); public static int count1; public static int count2 = 0; ...
    2018-10-08 08:04:16 | Java
  • JVM-04-JVM 调优
    JVM 性能调优 在高性能硬件上部署程序,目前主要有两种方式: 通过 64 位 JDK 来使用大内存; 使用若干个 32 位虚拟机建立逻辑集群来利用硬件资源。 使用 64 位 JDK 管理大内存 堆内存变大后,虽然垃圾收集的频率减少了,但每次垃圾回收的时间变长。 如果堆内存为 14 G,那么每次 Full GC 将长达数十秒。如果 Ful...
    2018-10-08 02:04:06 | Java