注:本系列文章均摘录自《深入理解Java虚拟机:JVM高级特性与最佳实践》,作者周志明,我看的是第一版,现在第二版已经出了,
1.在高性能的硬件上部署程序的两种主要方式:
(1)通过64位JDK来使用大内存
(2)使用若干个32位虚拟机简历逻辑集群来利用硬件资源
2.除了Java堆和永久代之外,以下区域还会占用较多内存,这里所有的内存总和会受到操作系统进程最大内存的限制
(1)Direct Memory:可以通过-XX:MaxDirectMemorySize调整大小,内存不足时抛出OutMemoryError或OutOfMemory:Direct buffer memory
(2)线程堆栈:可通过-Xss调整大小,内存不足时抛出StackOverflowError(纵向无法分配,即无法分配新的栈帧)或OutOfMemoryError:uable to create new native thread(横向无法分配,即无法建立新的线程)
(3)Scoket缓存区:每个Socket连接都有Receive和Send两个缓存区,分别占大约37KB和25KB的内存,如果连接多的话,这块内存的占用也比较多,如果无法分配,则可能会抛出IOException:Too many open file异常。
(4)JNI代码:如果代码中使用JNI调用本地库,那本地库使用的内存也不在堆中。
(5)虚拟机和GC:虚拟机和GC的代码执行也要消耗一定的内存。
3.编译时间是指虚拟机的JIT编译器(Just In Time Compiler)编译热点代码(Hot Spot Code)的耗时。为了解决程序解释执行速度的问题,JDK1.2以后,虚拟机内置了两个运行时编译器,如果一段Java代码的调用次数到达一定程度,就会被判定为热代码,从而交给JIT编译器即时编译为本地代码,以提高运行速度(这就是HotSpot虚拟机名字的由来)。Java运行期编译的最大缺点就是编译需要消耗程序正常的运行时间,也就是”编译时间“。
虚拟机提供了一个参数-Xint禁止编译运作,强制虚拟机堆字节码采用纯解释方式执行。
当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器,另外还有一个代号为C2的相对重量级的编译器,它能够提供更多的优化措施。
可以通过以下几个参数要求虚拟机生成GC日志:-XX:+PrintGCTimeStamps(打印GC停顿时间)、-XX:+PrintGCDetails(打印GC详细信息)、-verbose:gc(打印GC信息,输出内容已经被前一个参数包括,可以不写)、-Xloggc:gc.log。
可以把-Xms和-XX:PermSize参数值分别设置为-Xmx和-XX:MaxPermSize参数值,强制虚拟机在启动的时候就把老年代和永久代的容量固定下来,避免运行时自动扩展。
在vm参数-XX:+DisableExplicitGC屏蔽掉System.gc();
相关推荐
java虚拟机(JVM)调优案例分析与Eclipse性能调优实战
java虚拟机(JVM)调优案例分析与MyEclipse性能调优实战
### JVM实战-JVM调优案例分析与MyEclipse性能调优实战 #### 实验背景与目标 在现代软件开发过程中,提升开发效率是至关重要的环节之一。MyEclipse和Eclipse作为主流的集成开发环境(IDE),被广泛应用于Java项目的...
### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...
JVM性能调优是Java开发中至关重要的一环,它直接影响应用程序的运行效率和稳定性。jstat(JVM Statistics Monitoring Tool)是Oracle JDK提供的一款强大的命令行工具,用于实时监控Java虚拟机的各种运行状态,包括...
大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G) 〖课程介绍〗: 来自顶尖大厂的架构师级JVM优化与GC调优策略实战课程,是具备有尖端技术的优化课程。在课程内容上几乎不用过多的介绍,单是查阅目录就...
JVM下篇:性能监控与调优篇
总结,JVM调优是一项技术性极强的工作,需要深入理解JVM内存结构、垃圾回收机制,结合实际应用情况,通过调整相关参数实现最佳性能。实践中应结合理论知识与实践经验,不断测试、监控、分析,确保应用的高效稳定运行...
马老师 JVM 调优实战笔记 JVM 调优是 Java 开发者们不可或缺的技能,它直接影响着 Java 应用程序的性能和稳定性。本笔记是马老师的 JVM 调优实战笔记,涵盖了 JVM 的概述、内存结构、堆内存、垃圾回收算法、JVM ...
JVM性能监控与调优实战课程,作为整篇课程的重中之重,非常值得同学们参考学习。课程前端讲解了JVM的性能监控和调优的概述,对调优的的方法和工具进行讲解学习,让同学们掌握方法,理解知识。课程的中间阶段我们进行...
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...
通过对JVM内存结构、垃圾回收机制和性能优化策略的详细讲解,帮助读者深入理解JVM的工作原理和优化方法。 1. JVM内存结构 JVM的内存结构可以分为堆内存(Heap)和非堆内存(Non-Heap)。堆内存用于存储类实例和数...
《JVM调优实战》是一份深入探讨Java虚拟机(JVM)性能优化的文档,主要分为理论篇和实战篇两大部分。本文将详细解析其中的关键知识点。 理论篇首先介绍了JVM内存模型,将其比喻为一个多功能的养鱼塘。在这个比喻中...
为了深入学习和理解JVM的原理,可以参考诸如《深入理解Java虚拟机》这样的经典教材,其中涵盖了JVM从设计到实现的诸多细节。此外,随着JVM技术的发展,不断有新的特性被加入,因此,阅读官方文档、参与社区讨论、...
手册前言部分强调了对JVM体系结构的深入理解是性能调优的前提。在这个基础上,通过实例(example)的实践来巩固和验证理论知识。生产环境的复杂性要求开发者必须具备高度的实践能力,本手册可以作为学习和参考资料。...
总结来说,从JVM入门到实战调优,涉及了Java程序从编译到执行的全过程,包括Class文件格式、类加载、内存模型、运行时数据区、垃圾收集策略以及调优实践等多个层面。深入理解和掌握这些知识,不仅有助于提升Java程序...
《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...
每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...
实战案例分析 - **案例一:电商网站性能调优**:针对电商网站的特点,从JVM参数配置、代码层面等多个维度进行调优,提高用户体验。 - **案例二:大数据处理平台调优**:大数据处理平台往往需要处理海量数据,通过对...
《深入理解JVM性能调优和内存模型,垃圾回收,虚拟机原理,经典视频教程》是一套详尽的教育资源,旨在帮助Java开发者深入探索Java虚拟机(JVM)的内部工作机制,提升性能优化的能力。本教程共包含110讲,内容丰富,适合...