`
bsr1983
  • 浏览: 1124167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入理解JVM学习笔记——第五章 调优案例分析与实战

    博客分类:
  • JVM
 
阅读更多
 注:本系列文章均摘录自《深入理解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)调优案例分析与Eclipse性能调优实战

    java虚拟机(JVM)调优案例分析与MyEclipse性能调优实战

    java虚拟机(JVM)调优案例分析与MyEclipse性能调优实战

    JVM实战-JVM调优案例分析与MyEclipse性能调优实战

    ### JVM实战-JVM调优案例分析与MyEclipse性能调优实战 #### 实验背景与目标 在现代软件开发过程中,提升开发效率是至关重要的环节之一。MyEclipse和Eclipse作为主流的集成开发环境(IDE),被广泛应用于Java项目的...

    马士兵jvm调优笔记.docx

    ### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...

    学习笔记——JVM性能调优之 jstat(csdn)————程序.pdf

    JVM性能调优是Java开发中至关重要的一环,它直接影响应用程序的运行效率和稳定性。jstat(JVM Statistics Monitoring Tool)是Oracle JDK提供的一款强大的命令行工具,用于实时监控Java虚拟机的各种运行状态,包括...

    大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G)

    大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G) 〖课程介绍〗: 来自顶尖大厂的架构师级JVM优化与GC调优策略实战课程,是具备有尖端技术的优化课程。在课程内容上几乎不用过多的介绍,单是查阅目录就...

    JVM下篇:性能监控与调优篇

    JVM下篇:性能监控与调优篇

    jvm调优实战经验

    总结,JVM调优是一项技术性极强的工作,需要深入理解JVM内存结构、垃圾回收机制,结合实际应用情况,通过调整相关参数实现最佳性能。实践中应结合理论知识与实践经验,不断测试、监控、分析,确保应用的高效稳定运行...

    马老师jvm调优实战笔记

    马老师 JVM 调优实战笔记 JVM 调优是 Java 开发者们不可或缺的技能,它直接影响着 Java 应用程序的性能和稳定性。本笔记是马老师的 JVM 调优实战笔记,涵盖了 JVM 的概述、内存结构、堆内存、垃圾回收算法、JVM ...

    涨见识!JVM性能监控与调优实战 一线大厂大牛讲师的JVM优化案例与解决方案课程

    JVM性能监控与调优实战课程,作为整篇课程的重中之重,非常值得同学们参考学习。课程前端讲解了JVM的性能监控和调优的概述,对调优的的方法和工具进行讲解学习,让同学们掌握方法,理解知识。课程的中间阶段我们进行...

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...

    JVM调优实战(转)

    通过对JVM内存结构、垃圾回收机制和性能优化策略的详细讲解,帮助读者深入理解JVM的工作原理和优化方法。 1. JVM内存结构 JVM的内存结构可以分为堆内存(Heap)和非堆内存(Non-Heap)。堆内存用于存储类实例和数...

    JVM调优实战.doc

    《JVM调优实战》是一份深入探讨Java虚拟机(JVM)性能优化的文档,主要分为理论篇和实战篇两大部分。本文将详细解析其中的关键知识点。 理论篇首先介绍了JVM内存模型,将其比喻为一个多功能的养鱼塘。在这个比喻中...

    深入理解jvm虚拟机

    为了深入学习和理解JVM的原理,可以参考诸如《深入理解Java虚拟机》这样的经典教材,其中涵盖了JVM从设计到实现的诸多细节。此外,随着JVM技术的发展,不断有新的特性被加入,因此,阅读官方文档、参与社区讨论、...

    JVM系列之性能调优参考手册(实践篇).pdf

    手册前言部分强调了对JVM体系结构的深入理解是性能调优的前提。在这个基础上,通过实例(example)的实践来巩固和验证理论知识。生产环境的复杂性要求开发者必须具备高度的实践能力,本手册可以作为学习和参考资料。...

    JVM入门到JVM 调优实战

    总结来说,从JVM入门到实战调优,涉及了Java程序从编译到执行的全过程,包括Class文件格式、类加载、内存模型、运行时数据区、垃圾收集策略以及调优实践等多个层面。深入理解和掌握这些知识,不仅有助于提升Java程序...

    深入理解JVM&G1; GC

    《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...

    深入理解JVM.rar

    每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...

    个人总结之—JVM性能调优实战

    实战案例分析 - **案例一:电商网站性能调优**:针对电商网站的特点,从JVM参数配置、代码层面等多个维度进行调优,提高用户体验。 - **案例二:大数据处理平台调优**:大数据处理平台往往需要处理海量数据,通过对...

    深入理解JVM性能调优和内存模型,垃圾回收,虚拟机原理,经典视频教程

    《深入理解JVM性能调优和内存模型,垃圾回收,虚拟机原理,经典视频教程》是一套详尽的教育资源,旨在帮助Java开发者深入探索Java虚拟机(JVM)的内部工作机制,提升性能优化的能力。本教程共包含110讲,内容丰富,适合...

Global site tag (gtag.js) - Google Analytics