返回顶部
首页 > 资讯 > 精选 >JVM优化配置指导是怎么样的
  • 748
分享到

JVM优化配置指导是怎么样的

2023-06-17 14:06:35 748人浏览 独家记忆
摘要

JVM优化配置指导是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。本文向大家简单介绍一下JVM优化配置的概念,通常情况下是不建议在没有任何统计和分析的情况下去手动配置J

JVM优化配置指导是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

本文向大家简单介绍一下JVM优化配置的概念,通常情况下是不建议在没有任何统计和分析的情况下去手动配置JVM的参数来调整性能,因为在JVM5以上已经作了根据机器和OS的情况自动配置合适参数的算法,基本能够满足大部分的情况。

JVM优化配置

这里首先要说明的是这里提到的JVM是Sun的HotSpotJVM5和以上的版本。性能优化在应用方面可以有很多手段,包括Cache,多线程,各种算法等等。通常情况下是不建议在没有任何统计和分析的情况下去手动配置JVM的参数来调整性能,因为在JVM5以上已经作了根据机器和OS的情况自动配置合适参数的算法,基本能够满足大部分的情况,当然这种自动适配只是一种通用的方式,如果说真的要达到***,那么还是需要根据实际的使用情况来手动的配置各种参数设置,提高性能。

JVM能够对性能产生影响的***部分就是对于内存的管理。从jdk1.5以后内存管理和分配有了很多的改善和提高。内存分配以及管理的几个基本概念和参数说明:

◆JavaHotspotMode:

server和client两种模式,如果不配置,JVM会根据应用服务器硬件配置自动选择模式,server模式启动比较慢,但是运行期速度得到了优化,client启动比较快,但是运行期响应没有server模式的优化,适合于个人PC的服务开发测试

◆GarbageCollectorPolicy:

在Jdk1.5的时候已经提供了三种GC,除了原来提供的串行GC(SerialGC)以外,还提供了两种新的GC:ParallelGC和ConcMarkSweepGC。ParallelGC采用了多线程并行管理和回收垃圾对象,提高了回收效率,提高了服务器的吞吐量,适合于多处理器的服务器。

◆ConcMarkSweepGC

采用的是并发方式来管理和回收垃圾对象,降低垃圾回收产生的响应暂停时间。这里说一下并发和并行的区别,并发指的是多个进程并行执行垃圾回收,那么可以很好的利用多处理器,而并行指的是应用程序不需要暂停可以和垃圾回收线程并发工作。串行GC适合小型应用和单处理器系统(无需多线程交互,效率比较高),后两者适合大型系统。
使用方式就是在参数配置中增加-XX:+UseParallelGC等方式来设置。

对于这部分的JVM优化配置在网上有很多的实例可以参考,不过最终采用哪一种GC还是要根据具体的情况来分析和选择。

Heap:

OOM的各种经历已经让每一个架构师开发人员看到了了解Heap的重要性。OOM已经是Heap的临界点,不得不引起注意,然而Heap对于性能的潜在影响并未被引起重视,不过和GC配置一样,在没有对使用情况作仔细分析和研究的情况下,贸然的去修改Heap配置,可能适得其反,这里就来看一下Heap的一些概念和对于性能的影响。

我们的应用所能够得到的***的Heap受三部分因素的制约:数据处理模型(32位或者64位操作系统),系统地虚拟内存总数和系统的物理内存总数。首先Heap的大小不能超过不同操作系统的进程寻址范围,当前大部分系统***限度是4G,windows通常是2G,linux通常是3G。系统的虚拟内存也是分配的依据,首先是不能超过,然后由于操作系统支持硬盘来做部分的虚拟内存,如果设置过大,那么对于应用响应来说势必有影响。再则就是要考虑同一台服务器上运行多个Java虚拟机所消耗的资源总合也不能超过可用资源。就和前面OOM分析中的一样,其实由于OS的数据处理模型的限制,机器本身的硬件内存资源和虚拟内存资源并不一定会匹配,那么在有限的资源下如何调整好资源分配,对于应用来说尤为重要。

JVM优化配置中关于Heap的几个参数设置:

说了Heap的有限资源问题以后,就来看看如何通过配置去改变JVM对于Heap的分配。下面所说的主要是对于JavaHeap的分配,那么在申请了JavaHeap以后,剩下的可用资源就会被使用到NativeHeap。
Xms:javaheap初始化时的大小。默认情况是机器物理内存的1/64。这个主要是根据应用启动时消耗的资源决定,分配少了申请起来会降低启动速度,分配多了也浪费。

Xmx:javaheap的***值,默认是机器物理内存的1/4,***也就到1G。

这个值决定了最多可用的JavaHeapMemory,分配过少就会在应用需要大量内存作缓存或者零时对象时出现OOM的问题,如果分配过大,那么就会产生上文提到的第二类OOM。所以如何配置还是根据运行过程中的分析和计算来确定,如果不能确定还是采用默认的配置。

Xmn:javaheap新生代的空间大小。

在GC模型中,根据对象的生命周期的长短,产生了内存分代的设计:青年代(内部也分成三部分,类似于整体划分的作用,可以通过配置来设置比例),老年代,持久代。每一代的管理和回收策略都不相同,最为活跃的就是青年代,同时这部分的内存分配和管理效率也是***。通常情况下,对于内存的申请优先在新生代中申请,当内存不够时会整理新生代,当整理以后还是不能满足申请的内存,就会向老年代移动一些生命周期较长的对象。

这种整理和移动会消耗资源,同时降低系统运行响应能力,因此如果青年代设置的过小,就会频繁的整理和移动,对性能造成影响。那是否把年青代设置的越大越好,其实不然,年青代采用的是复制搜集算法,这种算法必须停止所有应用程序线程,服务器线程切换时间就会成为应用响应的瓶颈(当然永远不用收集那么就不存在这个问题)。老年代采用的是串行标记收集的方式,并发收集可以减少对于应用的影响。

Xss:线程堆栈***值。允许更多的虚拟内存空间地址被JavaHeap使用。上面介绍了一下关于JVM优化配置的理论知识,下面看一下几个例子。

以下是sun公司的性能优化白皮书中提到的几个例子:

1.对于吞吐量的调优。机器配置:4G的内存,32个线程并发能力。

java-Xmx3800m-Xms3800m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:ParallelGCThreads=20
-Xmx3800m-Xms3800m配置了***JavaHeap来充分利用系统内存。
-Xmn2g创建足够大的青年代(可以并行被回收)充分利用系统内存,防止将短期对象复制到老年代。
-Xss128减少默认***的线程栈大小,提供更多的处理虚拟内存地址空间被进程使用。
-XX:+UseParallelGC采用并行垃圾收集器对年青代的内存进行收集,提高效率。
-XX:ParallelGCThreads=20减少垃圾收集线程,默认是和服务器可支持的线程***并发数相同,往往不需要配置到***值。

2.尝试采用对老年代并行收集

java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:+UseParallelGC-XX:ParallelGCThreads=20-XX:+UseParallelOldGC
-Xmx3550m-Xms3550m内存分配被减小,因为ParallelOldGC会增加对于NativeHeap的需求,因此需要减小JavaHeap来满足需求。
-XX:+UseParallelOldGC采用对于老年代并发收集的策略,可以提高收集效率。

3.提高吞吐量,减少应用停顿时间

java-Xmx3550m-Xms3550m-Xmn2g-Xss128k-XX:ParallelGCThreads=20-XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:SurvivorRatio=8-XX:TargetSurvivorRatio=90-XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC-XX:+UseParNewGC选择了并发标记交换收集器,它可以并发执行收集操作,降低应用停止时间,同时它也是并行处理模式,可以有效地利用多处理器的系统的多进程处理。

-XX:SurvivorRatio=8-XX:MaxTenuringThreshold=31表示在青年代中Eden和Survivor比例,设置增加了Survivor的大小,越大的survivor空间可以允许短期对象尽量在年青代消亡。
-XX:TargetSurvivorRatio=90允许90%的空间被占用,超过默认的50%,提高对于survivor的使用率。
类似的例子网上很多,这儿就不在列下来了,最终是否采取自己配置来替换默认配置还是要根据虚拟机的使用情况来分析和配置。

看完上述内容,你们掌握JVM优化配置指导是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: JVM优化配置指导是怎么样的

本文链接: https://lsjlt.com/news/289586.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JVM优化配置指导是怎么样的
    JVM优化配置指导是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。本文向大家简单介绍一下JVM优化配置的概念,通常情况下是不建议在没有任何统计和分析的情况下去手动配置J...
    99+
    2023-06-17
  • Nginx的SSL配置优化是怎样的
    Nginx的SSL配置优化是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Nginx的SSL配置优化 一般网站使用的SSL证书都是RSA证书,这种证书基本都是2...
    99+
    2023-06-04
  • 线上JVM是怎么优化的
    本篇内容介绍了“线上JVM是怎么优化的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JVM的内存模型是什么样子的?JVM内存模型可以大致可划...
    99+
    2023-06-04
  • jvm线程变化是怎样的
    这篇文章主要介绍“jvm线程变化是怎样的”,在日常操作中,相信很多人在jvm线程变化是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jvm线程变化是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-03
  • mysql 优化的通配符是怎样的
    本篇文章为大家展示了mysql 优化的通配符是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 mysql 再查询数据时,使用wh...
    99+
    2024-04-02
  • JVM安装与Tomcat配置具体步骤是怎样的
    这篇文章将为大家详细讲解有关JVM安装与Tomcat配置具体步骤是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。向大家描述一下JVM安装与Tomcat配置的具体步骤,主要包括下载,安装...
    99+
    2023-06-17
  • JVM中内存分配策略是怎么样的
    小编给大家分享一下JVM中内存分配策略是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内存分配策略   了解GC其中很重要一点就是了解JVM的内...
    99+
    2023-06-02
  • ASP.NET配置怎么优化
    这篇文章主要讲解了“ASP.NET配置怎么优化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET配置怎么优化”吧!ASP.NET性能优化之状态管理a)  &nb...
    99+
    2023-06-18
  • vsftpd 配置是怎么样的
    这篇文章给大家介绍vsftpd 配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 IP监听与连接控制     vsftpd工作在独立模式(standalon...
    99+
    2023-06-13
  • 导致JVM物理内存消耗大的Bug是怎么样的
    导致JVM物理内存消耗大的Bug是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。概述最近我们公司在帮一个客户查一个JVM的问题(JDK1.8.0_191...
    99+
    2023-06-05
  • SpringBoot外化配置源码的参数及配置是怎样的
    SpringBoot外化配置源码的参数及配置是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。综合实战我们讲解了关于 Spring B...
    99+
    2024-04-02
  • CentOS VPS入手后的基本优化和安全配置是怎样的
    本篇文章为大家展示了CentOS VPS入手后的基本优化和安全配置是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。适用环境和条件:安装CentOS5或6的任意VPS升级系统代码如下:yum u...
    99+
    2023-06-10
  • TOMCAT配置优化的方法是什么
    本篇内容主要讲解“TOMCAT配置优化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TOMCAT配置优化的方法是什么”吧!Tomcat连接器协议优化Tomcat 连接器的三种方式: ...
    99+
    2023-06-27
  • win7优化配置的方法是什么
    本文小编为大家详细介绍“win7优化配置的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“win7优化配置的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。win7优化配置的方法首先点击计算机,...
    99+
    2023-07-01
  • mongodb配置优化的方法是什么
    MongoDB的配置优化方法可以帮助提升数据库性能和稳定性。以下是一些常见的MongoDB配置优化方法: 确保使用最新版本的Mo...
    99+
    2024-04-10
    mongodb
  • WebSEAL Configure配置是怎么样的
    小编给大家分享一下WebSEAL Configure配置是怎么样的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.[rstest1][/]#pdconfigTivoli Access Manager Setup Menu...
    99+
    2023-06-03
  • MySQL数据库优化是怎么样的
    这期内容当中小编将会给大家带来有关MySQL数据库优化是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的...
    99+
    2024-04-02
  • mysql 优化框架是怎样的
    本篇文章给大家分享的是有关mysql 优化框架是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 MySQL优...
    99+
    2024-04-02
  • MySQL优化经验是怎样的
    MySQL优化经验是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL优化经验同时在线访问量继续增大 对于1G内存的服务器明显...
    99+
    2024-04-02
  • Mycat 核心配置是怎么样的
    这篇文章给大家介绍Mycat 核心配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。常用配置文件间的关系由上图可以看到 Mycat 的核心配置文件均采用xml格式,这几个配置...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作