`

JVM性能参数调整介绍

阅读更多

JVM内部体系结构


Sun JDK在实现时遵照JVM规范,将内存空间划分为方法区、堆、本地方法栈、PC寄存器、jvm方法栈。
方法区
    方法区主要存放要加载的类的信息,比如类的名称、类的修饰符、类中的静态变量、final类型的常量、field、method等信息。方法区是线程共享的,在一定条件下也会被GC,当方法区要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。
    方法区的存储区域对应Permanet Generation(又称,持久代),其默认值为{16MB-64MB},它的大小可以通过如下选项进行调整:
                                            最小值:-XX:PermSize
                                            最大值:-XX:MaxPermSize

    堆用于存储新创建的对象和数组。其大小可以通过如下选项进行调整:
                                            最小值:-Xms
                                            最大值:-Xmx
    为了让内存回收更有效率,Sun JDK从1.2开始对堆采用分代管理的方式。
                        heap = New Generation (新生代)+ Old Generation(旧生代)
    其中,New Generation又可以分为Eden SpaceSurvivor Space,而Survivor Space由两块大小相同的区域组成(通常称为S0、S1)。那么,Eden Space、S0、S1用途上有什么区别吗?先来说说Eden Space,由于堆是线程共享的,因此在堆上分配内存是需要加锁的,这就导致创建对象开销增大,Sun JDK为了提升内存分配的效率,会为每个线程在新生代的Eden Space上分配一块独立的空间,这块空间叫做TLAB(Thread Local Allocation Buffer),因此Eden Space是多个线程独享的连续的内存区域,在一个线程内创建对象,JVM首先考虑在Eden Space的TLAB上分配,如果对象过大或者TLAB空间已用完,那么将在堆上分配。S0、S1也用于新创建对象的存储,他们的另外一个用途是在GC时的临时复制空间。
                                           新生代大小值:-Xmn
                                           Survivor Space大小:-XX:SurvivorRatio
    旧生代主要存放多次GC后仍然存活的对象,不过,新建的对象也有可能在旧生代上分配。一种是大对象(-XX:PretenureSizeThreshold来确定),另一种是大数组,且数组未引用外部对象。旧生代大小:
                                            旧生代大小值=-Xmx 减去 -Xmn
JVM方法栈
    JVM方法栈是线程私有的,其在内存分配上非常高效。当JVM方法栈空间不足时,会抛出StackOverflowError的错误。JVM方法栈可通过如下选项进行调整:
                                            JVM方法栈大小:-Xss

  • 大小: 30.8 KB
分享到:
评论

相关推荐

    MSB企业级JVM优化与性能调优课程 解读JVM内部机制-针对性解决企业架构优化问题

    包括调整内存参数、调整 GC 策略、使用 GC 日志分析工具等。在实际应用中,我们可以根据不同的场景和需求,采用不同的调优手段,从而达到最优的性能效果。此外,课程还介绍了如何进行 JVM 线程 dump 分析和内存 dump...

    JVM调优全面总结 中文

    JVM性能调优具有应用独特性(application specific),就是说,不同的应用情形应该有不同的调整方案,这就要求你首先要观察JVM的运行状态,然后根据观察结果调整参数。没有一个通用的调优方案可以适用于所有的...

    JVM问题分析调优经验

    一、前言 JVM 性能优化步骤: 预估系统参数 压测后,调整JVM 参数 线上系统监控和优化 统一的JVM 参数模板 线上频繁 Full GC 的表现: 机器CPU 负载过高 频繁Full GC 报警

    resin-jvm 调优

    1.JVM的gc概述 gc即垃圾收集机制是指...在设置了上述参数后可以通过Visualgc 来观察垃圾回收的一些参数状态,再做相应的调整来改善性能。一般的标准是减少fullgc的次数,最好硬件支持使用并行垃圾回收(要求多CPU)。

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    112 5.2.5 服务器JVM进程崩溃 / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 ...

    消息中间件 RocketMQ 性能压测工具

    内含多种命令行参数(例如消费位点的调整,消息体大小调整,并发数调整,JVM 参数调优,延迟等级调整等)实现压测的精细化控制。毫不夸张的说,RocketMQ 覆盖的功能基本都能测到。 3 简单易用:我将每个压测场景都...

    JVM内存管理及GC原理调优实战

    JVM调优是一个系统而又复杂的过程,由于Java虚拟机自动管理内存,在大多数情况下,我们基本上不用去调整JVM内存分配,因为一些初始化参数已经可以保证应用服务正常稳定地工作。但是当有性能问题的时候该怎么去调优,...

    2024最新的面试题来了

    模块化编程与热插拔、Java单例防止反射漏洞攻击、JVM常用配置...这些参数可以调整JVM的性能、内存管理、垃圾回收等方面的行为,以满足应用程序的需求。常用的配置参数包括堆内存大小、垃圾回收算法、线程堆栈大小等。

    WebLogic_精简培训内容.ppt

    WebLogic Server 安装规划、配置,相应操作参数调整,server参数调整 WebLogic Server Domain的创建与配置 Weblogic Console的使用(通过Console进行管理) Weblogic Server的log文件管理(通过Log分析server运行...

    关于Flume的优化和高可用

    文章目录Flume优化一、内存参数优化(减少GC)1)-xmx和-xms设置相同值,避免在 GC 后调整堆大小带来的压力。2)JVM heap(堆内存)设置4G或更高二、channel优化Flume如何保证数据安全(高可用)事务机制Flume解决...

    性能调优文档_自动化测试

    该文档为在性能测试过程中对一些中间件的调优,如对tomcat的JVM、连接器、线程数等,中创中间件的JVM、连接数、日志级别调整,weblogic的JVM、关闭访问日志等。 同时包括数据库连接池的调优,Apache集群、oracle参数...

    weblogic平台J2EE调优策略

    2.2.3 调整连接参数 2.2.4 创建新的执行队列 2.3 JDBC调优 2.3.1 调整连接池配置 2.4 WEB调优 2.4.1 调整WEB应用描述符 2.5 JMS调优 2.6 EJB调优 2.6.1 调整pool和cache 2.6.2 优化事务隔离级别和事务属性 2.6.3 ...

    精品:java虚拟机分析与优化PPT

    java虚拟机分析与优化PPT(演讲:李镭) 李镭——现任IBM中国有限公司软件部...演讲者将列出对于IBM和SUN JVM在1.4.2以及1.5版本上对WebSphere有用的一组调优参数。如果您对以上议题感兴趣或有自己的经验,期待您的参与!

    webLogic服务器性能优化文档

    该文档集中体现了对WebLogic Server 的"运行模式"、"JVM参数设置"、"线程数设置"、"JDBC连接池的性能调整"以及"使用weblogic“自有的IO”性能包"这些方面的设置讲解。 该文档对在web应用发布,提升其性能方面有一定...

    Optimizer for Eclipse

    在2015年EclipseCon上,Zero Turnaround(消除Java...从Eclipse Marketplace下载安装后,Eclipse优化器会通过一系列的向导步骤询问用户是否调整JVM启动参数中的内存设置和其他性能标志,从而大大提升应用的启动速度。

    Omega-AI基于java打造的深度学习框架帮助你快速搭建神经网络实现模型推理与训练引擎支持自动求导多线程与GPU运算

    Omega-AI:基于java打造的深度学习...由于训练vgg16模型的参数比较庞大,所以在部署项目的时候需要对jvm内存进行调整. 调整事例如:-Xmx20480m -Xms20480m -Xmn10240m。基于yolo算法目标识别基于yolov3口罩佩戴识别。

    JSP session配置对web应用的影响

    刚开始以为是JVM虚拟机的各项参数配置的不合理,我们就对JVM虚拟机的参数进行调整,调整后发现GC还是非常的频繁。 funll GC频繁非常影响性能,我们把jvm的heapdump( Java 堆栈的快照)文件导出来,采用IBM Heap...

    Eclipse 启动运行速度调优

    注意,由于 -X (尤其是 -XX JVM)开关通常是 JVM 或 JVM 供应商特定的,本部分介绍的开关可用于 Sun Microsystems J2SE 1.4.2。 <br>以下设置在大多数系统上将产生比工厂更好的设置性能。 -vmargs - ...

    HBase优化实战

    本文来自于cnblogs,介绍了Rowkey设计问题,Region重分布,HDFS写入超时,网络拓扑,JVM参数调整等。Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据。对于像Datastream...

Global site tag (gtag.js) - Google Analytics