Quguang's Blog

当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人。

《深入拆解Java虚拟机》-JVM是如何执行方法调用的?(上)

JVM是如何执行方法调用的?(上)


理解GC日志

理解GC日志,基于jdk1.7,一步步看懂GC日志


JVM性能调优

linux性能调优和年轻代大小选择和年老代大小的选择


JVM 工具

本文介绍了常用的JDK的命令行工具


Java虚拟机是如何加载Java类的?

Java虚拟机是如何加载Java类的?

虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本没有指明从哪里获取、怎样获取。这种开放使得Java在很多领域得到充分运用,例如:

  • 从ZIP包中读取,这很常见,成为JAR,EAR,WAR格式的基础
  • 从网络中获取,最典型的应用就是Applet
  • 运行时计算生成,最典型的是动态代理技术,在java.lang.reflect.Proxy中,就是用了ProxyGenerator.generateProxyClass来- 为特定接口生成形式为“*$Proxy”的代理类的二进制字节流
  • 由其他文件生成,最典型的JSP应用,由JSP文件生成对应的Class类

从class文件到内存中的类,按先后顺序需要经过加载、链接、以及初始化三大步骤。