JVM内存分配调优
Reference: https://time.geekbang.org/column/article/108139
参考指标
- GC频率:⾼频的FullGC会给系统带来⾮常⼤的性能消耗,虽然MinorGC相对FullGC来说好了许多,但过多的MinorGC仍会给系统带来压⼒。
- 内存:这⾥的内存指的是堆内存⼤⼩,堆内存又分为年轻代内存和⽼年代内存。⾸先我们要分析堆内存⼤⼩是否合适,其实是分析年轻代和⽼年代的⽐例是否合适。如果内存不⾜或分配不均匀,会增加FullGC,严重的将导致CPU持续爆满,影响系统性能。
- 吞吐量:频繁的FullGC将会引起线程的上下⽂切换,增加系统的性能开销,从⽽影响每次处理的线程请求,最终导致系统的吞吐量下降。
- 延时:JVM的GC持续时间也会影响到每次请求的响应时间。
具体调优方法
性能配置参数如果⼀定要改,那就必须基于⼤量的测试结果或线上的具体性能来进⾏调整,这是优化的前提
- 调整堆内存空间减少FullGC:通过⽇志分析,堆内存基本被⽤完了,⽽且存在⼤量FullGC,这意味着我们的堆内存严重不⾜,这个时候我们需要调⼤堆内存空间。
- 设置Eden、Survivor区⽐例:在JVM中,如果开启 AdaptiveSizePolicy,则每次 GC 后都会重新计算 Eden、From Survivor和 To Survivor区的⼤⼩,计算依据是 GC 过程中统计的 GC 时间、吞吐量、内存占⽤量。这个时候SurvivorRatio默认设置的⽐例会失效。在JDK1.8中,默认是开启AdaptiveSizePolicy的,我们可以通过-XX:-UseAdaptiveSizePolicy关闭该项配置,或显⽰运⾏-XX:SurvivorRatio=8,将Eden、Survivor的⽐例设置为8:2。⼤部分新对象都是在Eden区创建的,我们可以固定Eden区的占⽤⽐例,来调优JVM的内存分配性能。
JVM内存分配调优的更多相关文章
- JVM内存分配和垃圾回收以及性能调优
JVM内存分配策略 一:堆中优先分配Eden 大多数情况下,对象都在新生代的Eden区中分配内存.而新生代会频繁进行垃圾回收. 二:大对象直接进入老年代 需要大量连续空间的对象,如:长字符串.数组等, ...
- Android性能调优篇之探索JVM内存分配
开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...
- JVM(五) 生产环境内存溢出调优
1.gc配置参数 1.1 控制台打印gc日志 -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC(详细的gc信息) 1.2 输出gc日志到指定文件 - ...
- [JVM教程与调优] 了解JVM 堆内存溢出以及非堆内存溢出
在上一章中我们介绍了JVM运行时参数以及jstat指令相关内容:[JVM教程与调优] 什么是JVM运行时参数?.下面我们来介绍一下jmap+MAT内存溢出. 首先我们来介绍一下下JVM的内存结构. J ...
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 转:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html光说不练假把式,学习J ...
- [java] JVM监控与调优
原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分 ...
- Tomcat性能调优-JVM监控与调优
参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...
- Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案
Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案问题linux的jetty下发布程序后再启动jetty服务时 ...
随机推荐
- TypeScript快速笔记(二)
1) TypeScript中的判断语句,可以使用非0值代表true.如: function add1(a: number, b?:number): number{ // 注意b是可选参数 consol ...
- centos7部署前后端分离项目的过程
概述 本文主要讲解在安装了centos7的Linux主机中部署前后端分离项目的过程. 前端项目名为:vue_project:后端项目名为:django_project. 将这两个项目放在/opt/wh ...
- 在vue中如何引jquer
最近学习vue,习惯性的通过<script>标签引入jquery,写完后报错才想起来,这种方式在vue是不适用的. 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jqu ...
- 十七、jenkins运行robotframework脚本,配置自动发送邮件
一.配置系统管理-系统设置: A.系统管理--系统设置--Jenkins Location-系统管理员邮件地址:配置管理员邮箱全称(qq,163等都可以) B.配置管理员邮箱属性: 1.输入smtp服 ...
- ConcurrentSkipListMap 源码分析
ConcurrentSkipListMap ConcurrentSkipListMap 能解决什么问题?什么时候使用 ConcurrentSkipListMap? 1)ConcurrentSkipLi ...
- SQL Server创建链接服务器
1.通过sql语句创建链接服务器,数据是sql server的 EXEC sp_addlinkedserver @server='test', --链接服务器别名,自定义 @srvproduct='' ...
- python 正则表达式 re.match
#coding:utf-8 import re #匹配内容:单词+空格+单词+任意字符 #\w 单词字符[A-Za-z0-9_] #(?P<name>...) 分组,除了原有的编号外在指定 ...
- [SDOI2016]征途 —— 斜率优化DP
时隔多年没有碰斜率优化了... 想当年被斜率优化虐的死去活来,现在看看...也就那样吧. Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计 ...
- TensorFlow学习笔记7-深度前馈网络(多层感知机)
深度前馈网络(前馈神经网络,多层感知机) 神经网络基本概念 前馈神经网络在模型输出和模型本身之间没有反馈连接;前馈神经网络包含反馈连接时,称为循环神经网络. 前馈神经网络用有向无环图表示. 设三个函数 ...
- Trapping Rain Water I && II
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...