
JVM性能调优
文章平均质量分 87
凌澜星空
这个作者很懒,什么都没留下…
展开
-
深入理解JVM(三)——垃圾收集策略详解
Java虚拟机的内存模型分为五个部分,分别是:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。这五个区域既然是存储空间,那么为了避免Java虚拟机在运行期间内存存满的情况,就必须得有一个垃圾收集者的角色,不定期地回收一些无效内存,以保障Java虚拟机能够健康地持续运行。这个垃圾收集者就是平常我们所说的“垃圾收集器”,那么垃圾收集器在何时清扫内存?清扫哪些数据?这就是接下来我们要解决的问题。原创 2016-04-19 12:36:56 · 10710 阅读 · 3 评论 -
深入理解JVM(二)——揭开HotSpot对象创建的奥秘
对象的创建过程当虚拟机遇到一条含有new的指令时,会进行一系列对象创建的操作:检查常量池中是否有即将要创建的这个对象所属的类的符号引用;若常量池中没有这个类的符号引用,说明这个类还没有被定义!抛出ClassNotFoundException;若常量池中有这个类的符号引用,则进行下一步工作;进而检查这个符号引用所代表的类是否已经被JVM加载;若该类还没有被加载,就找该类的class文件,并加载进原创 2016-04-19 15:19:20 · 7997 阅读 · 4 评论 -
深入理解JVM(四)——对象内存的分配策略
Java所承诺的自动内存管理主要是针对对象内存的回收和对象内存的分配。在Java虚拟机的五块内存空间中,程序计数器、Java虚拟机栈、本地方法栈内存的分配和回收都具有确定性,一半都在编译阶段就能确定下来需要分配的内存大小,并且由于都是线程私有,因此它们的内存空间都随着线程的创建而创建,线程的结束而回收。也就是这三个区域的内存分配和回收都具有确定性。而Java虚拟机中的方法区因为是用来存储类信息、常量原创 2016-04-19 17:29:49 · 9476 阅读 · 5 评论 -
深入理解JVM(五)——HotSpot垃圾收集器详解
极客头条用户请点击“阅读原文”,查看排版后原文。HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器。我们可以根据自己实际的应用需求选择最适合的垃圾收集器。根据新生代和老年代各自的特点,我们应该分别为它们选择不同的收集器,以提升垃圾回收效率。 新生代垃圾收集器1. Serial垃圾收集器单线程 只开启一条GC线程进行垃圾回收,并且在垃原创 2016-04-20 12:32:40 · 6081 阅读 · 2 评论 -
深入理解JVM(六)——JVM性能调优实战
如何在高性能服务器上进行JVM调优?为了充分利用高性能服务器的硬件资源,有两种JVM调优方案,它们都有各自的优缺点,需要根据具体的情况进行选择。1. 采用64位操作系统,并为JVM分配大内存我们知道,如果JVM中堆内存太小,那么就会频繁地发生垃圾回收,而垃圾回收都会伴随不同程度的程序停顿,因此,如果扩大堆内存的话可以减少垃圾回收的频率,从而避免程序的停顿。因此,人们自然而然想到扩大内存容量。而32位原创 2016-04-24 10:48:58 · 20853 阅读 · 2 评论 -
深入理解JVM(七)——Class文件结构
什么是JVM的“无关性”?Java具有平台无关性,也就是任何操作系统都能运行Java代码。之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现“一次编写,处处运行”。而JVM不仅具有平台无关性,还具有语言无关性。 平台无关性是指不同操作系统都有各自的JVM,而语言无关性是指Java虚拟机能运行除Java以外的代码!这听起来非常惊人,但JV原创 2016-04-25 20:20:27 · 12168 阅读 · 0 评论 -
深入理解JVM(八)——类加载的时机
类的生命周期一个类从加载进内存到卸载出内存为止,一共经历7个阶段: 加载——>验证——>准备——>解析——>初始化——>使用——>卸载其中,类加载包括5个阶段: 加载——>验证——>准备——>解析——>初始化在类加载的过程中,以下3个过程称为连接: 验证——>准备——>解析因此,JVM的类加载过程也可以概括为3个过程: 加载——>连接——>初始化C/C++在运行前需要完成预处理、编译、汇编、原创 2016-04-26 16:16:38 · 6572 阅读 · 5 评论 -
深入理解JVM(九)——类加载的过程
通过之前的介绍可知,类加载过程共有5个步骤,分别是:加载、验证、准备、解析、初始化。其中,验证、准备、解析称为连接。下面详细介绍这5个过程JVM所做的工作。加载注意:“加载”是“类加载”过程的第一步,千万不要混淆。1. 加载的过程在加载过程中,JVM主要做3件事情:通过一个类的全限定名来获取这个类的二进制字节流,即class文件: 在程序运行过程中,当要访问一个类时,若发现这个类尚未被加载,并满原创 2016-04-26 22:24:42 · 9430 阅读 · 1 评论 -
深入理解JVM(十)——类加载器
类与类加载器类加载器的作用:将class文件加载进JVM的方法区,并在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口。类与类加载器的关系:比较两个类是否相等,只有当这两个类由同一个加载器加载才有意义;否则,即使同一个class文件被不同的类加载器加载,那这两个类必定不同,即通过类的Class对象的equals执行的结果必为false。类加载器种类JVM提供如下三种类原创 2017-02-27 17:08:53 · 3239 阅读 · 0 评论 -
深入理解JVM(一)——JVM内存模型
JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区。下面对这五个区域展开深入的介绍。 1. 程序计数器1.1. 什么是程序计数器?程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。也就是说,程序计数器里面记录的是原创 2016-04-16 20:58:55 · 48062 阅读 · 13 评论