我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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优化配置指导是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

Nginx的SSL配置优化是怎样的

Nginx的SSL配置优化是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Nginx的SSL配置优化 一般网站使用的SSL证书都是RSA证书,这种证书基本都是2048位的
2023-06-04

线上JVM是怎么优化的

本篇内容介绍了“线上JVM是怎么优化的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JVM的内存模型是什么样子的?JVM内存模型可以大致可划
2023-06-04

JVM安装与Tomcat配置具体步骤是怎样的

这篇文章将为大家详细讲解有关JVM安装与Tomcat配置具体步骤是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。向大家描述一下JVM安装与Tomcat配置的具体步骤,主要包括下载,安装
2023-06-17

JVM中内存分配策略是怎么样的

小编给大家分享一下JVM中内存分配策略是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内存分配策略 了解GC其中很重要一点就是了解JVM的内存分配策略
2023-06-02

vsftpd 配置是怎么样的

这篇文章给大家介绍vsftpd 配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 IP监听与连接控制 vsftpd工作在独立模式(standalone)下的启动参数有两项: listen=y
2023-06-13

导致JVM物理内存消耗大的Bug是怎么样的

导致JVM物理内存消耗大的Bug是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。概述最近我们公司在帮一个客户查一个JVM的问题(JDK1.8.0_191
2023-06-05

CentOS VPS入手后的基本优化和安全配置是怎样的

本篇文章为大家展示了CentOS VPS入手后的基本优化和安全配置是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。适用环境和条件:安装CentOS5或6的任意VPS升级系统代码如下:yum u
2023-06-10

TOMCAT配置优化的方法是什么

本篇内容主要讲解“TOMCAT配置优化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TOMCAT配置优化的方法是什么”吧!Tomcat连接器协议优化Tomcat 连接器的三种方式:
2023-06-27

win7优化配置的方法是什么

本文小编为大家详细介绍“win7优化配置的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“win7优化配置的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。win7优化配置的方法1、首先点击计算
2023-07-01

WebSEAL Configure配置是怎么样的

小编给大家分享一下WebSEAL Configure配置是怎么样的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.[rstest1][/]#pdconfigTivoli Access Manager Setup Menu
2023-06-03

mongodb配置优化的方法是什么

MongoDB的配置优化方法可以帮助提升数据库性能和稳定性。以下是一些常见的MongoDB配置优化方法:确保使用最新版本的MongoDB:每个新版本都会带来性能和优化方面的改进,因此及时升级到最新版本是必要的。合理配置索引:正确的索引可以提
mongodb配置优化的方法是什么
2024-04-10

hadoop配置文件是怎么样的

这篇文章给大家介绍hadoop配置文件是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。文件名称 格式 描述hadoop-env.sh
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录