摘要: 使用BCEL动态改变Class内容 之前对Class文件中的常量池,Method的字节码指令进行了说明。JVM Class详解之一JVM Class详解之二 Method字节码指令现在我们开始实际动手,使用BCEL改变字节码指令,对Class文件进行功能扩充。 先介绍下BCEL全程Apache By 阅读全文
posted @ 2017-06-09 02:18 不会就问咯 阅读(955) 评论(0) 推荐(0) 编辑
摘要: 首先看Class中包含哪些信息简单的说所有Java文件中有的信息class文件都有,编译器帮我们将java文件转化成了JVM能看懂的class格式而已 Class 概述 Class文件是一组以8位字节为基础的二进制流,各个数据项目按照严格顺序紧凑排列在Class文件中。所有的16位,32位,64位长 阅读全文
posted @ 2017-06-09 02:17 不会就问咯 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 一些不得不说的概念 JVM JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Ja 阅读全文
posted @ 2017-06-09 02:16 不会就问咯 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 前言 现在市场上最常见的虚拟化软件有VMWare workstation(VMWare)、VirtualBox(Oracle)、Hyper-V(Microsoft)、KVM(Redhat)、Xen等,这些软件统称之为VMM(Virtual Machine Monitor),使用不同的虚拟化实现。而这 阅读全文
posted @ 2017-06-09 02:15 不会就问咯 阅读(2009) 评论(0) 推荐(0) 编辑
摘要: 首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。 对JVM内存的系统级的调优主要 阅读全文
posted @ 2017-06-09 02:14 不会就问咯 阅读(216) 评论(0) 推荐(0) 编辑
摘要: JVM内存组成结构 JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和 阅读全文
posted @ 2017-06-09 02:13 不会就问咯 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 前言 在Java语言开发过程中,out of memory错误是很常见的一种错误。对于JVM的内存结构有更深入的了解,更更好的帮我们排查此类问题,有效的避免此类问题发生。在Java 8中内存结构有进行了改变,Metaspace替代了PermGen。 内存结构简介 JVM的内存结构如下图所示:(图片来 阅读全文
posted @ 2017-06-09 02:12 不会就问咯 阅读(190) 评论(0) 推荐(0) 编辑
摘要: Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 Java源码编译机制 Java 源码编译由以下三个过程组成: 分析 阅读全文
posted @ 2017-06-09 02:12 不会就问咯 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 本文主要内容: 堆的回顾 串行收集器 并行收集器 CMS收集器 零、堆的回顾: 新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden 阅读全文
posted @ 2017-06-09 02:11 不会就问咯 阅读(201) 评论(0) 推荐(0) 编辑
摘要: HotSpot是较新的Java虚拟机技术,用来代替JIT(Just in Time)技术,可以大大提高Java运行的性能。Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而该技术将常用的部分代码编译为本地(原生,native)代码,这样显著提高了性能。用于服务器版和标准版的HotS 阅读全文
posted @ 2017-06-09 02:10 不会就问咯 阅读(383) 评论(0) 推荐(0) 编辑