01 2017 档案
摘要:要想了解Java动态代理,首先要了解什么叫做代理,熟悉设计模式的朋友一定知道在Gof总结的23种设计模式中,有一种叫做代理(Proxy)的对象结构型模式,动态代理中的代理,指的就是这种设计模式。 在我看来所谓的代理模式,和23种设计模式中的“装饰模式”是一个东西。23种设计模式中将它们作为两种模式,
阅读全文
摘要:定义 java虚拟机字节码执行引擎是jvm最核心的组成部分之一,它做的事情很简单:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。在不同的虚拟机实现里,执行引擎在执行java代码的时候可能会有解释执行和编译执行两种选择,也可能两者兼备。 运行时栈帧结构 java字节码执行引擎在
阅读全文
摘要:在看java虚拟机字节码执行引擎的时候,里面提到了java虚拟机里调用方法的字节码指令有5种: 前4种很容易理解,但是第5种笔者本人从这段描述上无法理解这个invokedynamic到底是什么东西,于是决定从实践入手来剖析一下。 invokedynamic本身是字节码命令,我们想直接调用这个命令只能
阅读全文
摘要:定义 虚拟机把描述类的数据从Class文件加载到内存,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类加载的过程 类的加载过程分为5个步骤:加载、验证、准备、解析、初始化 其中的验证、准备、解析阶段又统称为连接,如下图所示。 在这5个阶段中,加载、验证、准备、初始化这4个阶
阅读全文
摘要:今天遇到一个感觉很神奇的问题,记录一下问题以及自己分析问题的思路。 预警:不知道怎么看java字节码的朋友可能需要先看一下如何阅读java字节码才能看懂后面的解释。 我有一段程序: 这个程序的运行结果相信大家都能猜到: 在main方法里捕获异常没有处理直接往上层抛,最后异常打印到了控制台。 现在我给
阅读全文
摘要:JVM指令助记符 变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_ 操作数栈到变量:istore,istore_,lstore,lstore_,fstore,fstore_,dstore,dstor_,a
阅读全文
摘要:通用配置 -Xms4096m //最小堆内存 -Xmx4096m //最大堆内存 -Xmn2048m //年轻代大小 -XX:SurvivorRatio=8 //设置eden区和survivor区的内存大小比例,例如8就代表eden和两个survivor区的比例是8:1:1 -XX:MaxTenur
阅读全文
摘要:jps jps -mlv //列出正在运行的虚拟机进程 jstat jstat -gc pid //监视java堆状况 显示列名 具体描述 S0C 年轻代中第一个survivor(幸存区)的容量 (字节) S1C 年轻代中第二个survivor(幸存区)的容量 (字节) S0U 年轻代中第一个sur
阅读全文
摘要:远程连接linux的时候通常会遇到下面的问题: 用screen命令可以同时解决上面两个问题。 想象一下,如果你用的是windows系统,你的电脑同时连接了多个显示器,每个显示器上可以打开多个窗口,每个窗口对应一个应用程序。 在screen命令里,screen就相当于一个显示器,window就相当于一
阅读全文
摘要:要做JVM内存垃圾回收首先要明确两个问题: 1.哪些内存需要回收 jvm内存可以分为两类: 对于线程独占内存区域来说,他们的回收时机是非常确定的,在方法结束或线程结束的时候回收即可。 对于线程共享区域里的堆和方法区两个区域,都可以进行垃圾收集,但是方法区的收集效率远低于堆,因此java虚拟机规范中不
阅读全文

浙公网安备 33010602011771号