Java虚拟机学习(5):内存调优
JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略。由于GC开始垃圾回收时会挂起应用线程,严重影响了性能,调优的目是为了尽量降低GC所导致的应用线程暂停时间、 减少Full GC次数。
代大小调优
最关键参数:-Xms、 -Xmx 、-Xmn 、-XX:SurvivorRatio、-XX:MaxTenuringThreshold、-XX:PermSize、-XX:MaxPermSize
-Xms、 -Xmx 通常设置为相同的值,避免运行时要不断扩展JVM内存,这个值决定了JVM heap所能使用的最大内存。
-Xmn 决定了新生代空间的大小,新生代Eden、S0、S1三个区域的比率可以通过-XX:SurvivorRatio来控制(假如值为 4 表示:Eden:S0:S1 = 4:3:3 )
-XX:MaxTenuringThreshold 控制对象在经过多少次minor GC之后进入老年代,此参数只有在Serial 串行GC时有效。
-XX:PermSize、-XX:MaxPermSize 用来控制方法区的大小,通常设置为相同的值。
1.避免新生代大小设置过小
当新生代设置过小时,会产生两种比较明显的现象,一是minor GC次数频繁,二是可能导致 minor GC对象直接进入老年代。当老年代内存不足时,会触发Full GC。
2.避免新生代设置过大
新生代设置过大,会带来两个问题:一是老年大变小,可能导致Full GC频繁执行;二是 minor GC 执行回收的时间大幅度增加。
3.避免Survivor区过大或过小
-XX:SurvivorRatio参数的值越大,就意味着Eden区域变大,minor GC次数会降低,但两块Survivor区域变小,如果超过Survivor区域内存大小的对象在minor GC后仍没被回收,则会直接进入老年代,
-XX:SurvivorRatio参数值设置过小,就意味着Eden区域变小,minor GC触发次数会增加,Survivor区域变大,意味着可以存储更多在minor GC后任存活的对象,避免其进入老年代。
4.合理设置对象在新生代存活的周期
新生代存活周期的值决定了新生代对象在经过多少次Minor GC后进入老年代。因此这个值要根据自己的应用来调优,Jvm参数上这个值对应的为-XX:MaxTenuringThreshold,默认值为15次。
GC调优
1.GC搭配
参见另一遍垃圾收集器
2.查看JVM参数
命令行工具 可视化工具
3.GC日志参数
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:c:\Java\gc.log
本系列:
- Java虚拟机学习(1):体系结构 内存模型
- Java虚拟机学习(2):垃圾收集算法
- Java虚拟机学习(3): 类加载机制
- Java虚拟机学习(4):JDK可视化监控工具
- Java虚拟机学习(5):内存调优
Java虚拟机学习(5):内存调优相关推荐
- Java启动参数与内存调优一些学习笔记
转载自 Java启动参数与内存调优一些学习笔记 .参数的含义 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JV ...
- Java虚拟机这一块 —— JVM 调优和深入了解性能优化
JVM 调优和深入了解性能优化 JVM 调优的本质 GC 调优原则 调优的原则 目的 GC 调优 调优步骤 日志分析 阅读 GC 日志 -XX:+UseSerialGC -XX:+UseParNewG ...
- vilatile 深入理解java虚拟机_深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)...
本套课程从虚拟机的发展历史,虚拟机的内存结构,对象的分配与回收以及字节码,类加载等多个方面深入地对Java虚拟机进行了剖析.内容详实,语言通俗易懂.理论结合实践,让学习本套视频的朋友可以更快的理解虚拟 ...
- 深入理解Java虚拟机:Jvm性能调优
本篇内容包括:Jvm 性能调优简介:根据需求目标进行 Jvm 调优规划(即 调优的目标.调优的步骤):Jvm 调优参数.命令.工具:以及 Java 中的内存泄露问题的详解- 一.Jvm 性能调优简介 ...
- Java虚拟机性能监控与调优实战
Java虚拟机的内存结构,区别于侧重于多线程的Java内存模型(Java Memory Model) 但在此之前,我们该思考一下:JVM的内存结构为什么要这样划分? 我认为主要是依据于不同数据的更新频 ...
- Java虚拟机学习 - 体系结构 内存模型(转载)
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代" ."非堆", 它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内 ...
- Java虚拟机学习 - 体系结构 内存模型
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代" ."非堆", 它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存 ...
- java虚拟机学习-JVM调优总结-新一代的垃圾回收算法(11)
java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深 ...
- Java虚拟机学习(7):对象内存分配与回收
对象优先在Eden上分配 大多数情况下,对象优先在新生代Eden区域中分配.当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC).Minor GC期间虚拟机将E ...
最新文章
- 基于颜色特征,形状特征和纹理特征的数字图像的检索(Digital Image Retrieval)MATLAB GUI实现(本科毕业设计)
- 服务器自动post,jquery ajax $.post自动变GET的解决方式(for CI)
- 邬贺铨:解读5G技术关键点,及如何影响AIoT
- Cesium学习笔记(九):导入3D模型(obj转gltf)
- Blazor 数据绑定开发指南
- 企业之经典《HSRP热备份路由协议高级配置》技术
- qtreeview 点击二级节点弹出dialog_2019二级造价师开卷考?一顿操作猛如虎,一看分数59...
- [unity3d]插件2d toolskit
- 【IDEA】项目集成svn
- 使用segue进行页面跳转
- 15个免费好用的抓包工具
- em表示什么长度单位_CSS的长度单位(em)与em标签
- VB SendMessage 函数
- 我的win10平板维修,重刷系统的经验,windows pe5.0拯救我的平板
- c语言程序画正八边形,用少儿编程绘制一个正九边形
- 7-4 愿天下有情人都是失散多年的兄妹 (25 分)
- 检查xml格式是否正确
- 6款程序员必备的免费在线画图工具,贼好用!
- 论文的系统 排版软件Latex
- Blob的所有Type类型