JVM性能调优(out of memory内存溢出/泄露出来)

JVM基础知识:

JVM调优工具:

1.jmap

jmap常用参数

命令:jmap -heap PID >> D:\heap.log

解释:

using thread-local object allocation.		--- 使用本机线程分配
Mark Sweep Compact GC                           --- 标记MSC GC(MSC是CMS GC算法的Full GC算法)

Heap Configuration:                             ##堆配置情况
   MinHeapFreeRatio = 40                        ##最小堆使用比例(GC后,如果发现空闲堆内存占到整个堆的40%,则增大上限值)
   MaxHeapFreeRatio = 70                        ##最大堆可用比例(GC后,如果发现空闲堆内存占到整个堆的70%,则收缩上限值)
   MaxHeapSize      = 1073741824 (1024.0MB)     ##最大堆空间大小 1G
   NewSize          = 1048576 (1.0MB)           ##新生代分配大小 1M
   MaxNewSize       = 4294901760 (4095.9375MB)  ##最大可新生代分配大小 4G
   OldSize          = 4194304 (4.0MB)           ##老生代大小 4M
   NewRatio         = 2                         ##新生代比例(新生代和年老代的堆内存占用比例, 例如:2表示新生代占年老代的1/2,占整个堆内存的1/3)
   SurvivorRatio    = 8                         ##新生代与suvivor的比例(Eden与Survivor的占用比例。例如:8表示一个survivor区占用 1/8 的Eden内存,即1/10的新生代内存)
   PermSize         = 268435456 (256.0MB)       ##perm区大小
   MaxPermSize      = 268435456 (256.0MB)       ##最大可分配perm区大小

Heap Usage:                                     ##堆使用情况
New Generation (Eden + 1 Survivor Space):       ##新生代(伊甸区 + survior空间)
   capacity = 322109440 (307.1875MB)            ##新生代容量307M
   used     = 226237024 (215.75643920898438MB)  ##已经使用大小215M
   free     = 95872416 (91.43106079101562MB)    ##剩余容量91M
   70.23607380150051% used                      ##使用比例70%
Eden Space:                                     ##伊甸区
   capacity = 286326784 (273.0625MB)            ##伊甸区容量 273M
   used     = 206511520 (196.94473266601562MB)  ##已经使用大小196M
   free     = 79815264 (76.11776733398438MB)    ##剩余容量76M
   72.12441571655413% used                      ##使用比例72%
From Space:                                     ##survior1区
   capacity = 35782656 (34.125MB)               ##survior1容量 34M
   used     = 19725504 (18.81170654296875MB)    ##已经使用大小 18M
   free     = 16057152 (15.31329345703125MB)    ##剩余容量 15M
   55.125879979395606% used                     ##使用比例55%
To Space:					##survior2区
   capacity = 35782656 (34.125MB)		##survior2容量 34M
   used     = 0 (0.0MB)				##已经使用大小 0M
   free     = 35782656 (34.125MB)		##剩余容量 34M
   0.0% used					##使用比例0%
tenured generation:				##老生代使用情况
   capacity = 715849728 (682.6875MB)		##老生代容量 682M
   used     = 112533120 (107.3199462890625MB)	##已经使用大小 107M
   free     = 603316608 (575.3675537109375MB)	##剩余容量 575M
   15.72021551428179% used			##使用比例15%
Perm Generation:				##perm区使用情况
   capacity = 268435456 (256.0MB)		##perm区容量 256M
   used     = 83002880 (79.15771484375MB)	##已经使用大小 79M
   free     = 185432576 (176.84228515625MB)	##剩余容量 176M
   30.920982360839844% used			##使用比例30%

  

时间: 2024-10-10 22:08:47

JVM性能调优(out of memory内存溢出/泄露出来)的相关文章

JVM性能调优 第七章 内存分配策略

理解了jvm内存分配策略不仅是程序性能调优的重要知识,还能够给养成自己一种良好的代码思路,一个程序的代码差异往往都是在这里体现出来的. 一.对象优先分配到Eden区域   一般来说,新创建的对象都会直接分配到Eden区域,如果Eden区域内存不够,JVM就会触发GC(垃圾回收),一般来说在JVM中有3种GC: Minor GC:指发生在新生代的垃圾收集动作,非常频繁,速度较快. Major GC:指发生在老年代的GC,出现Major GC,经常会伴随一次Minor GC,同时Minor GC也会

JVM性能调优1:JVM性能调优理论及实践(收集整理)

本系列包括: JVM性能调优1:JVM性能调优理论及实践(收集整理) JVM性能调优2:JVM性能调优参数整理 JVM性能调优3:JVM_堆溢出分析过程和命令 JVm性能调优4:GC日志分析 JVM性能调优5:Heap堆分析方法 注:本文部分内容收集整理了网上的资料. 1.      内存结构 1.1.     分代结构图 注意: 在JVM中,非堆内存,根据模式不同分为不同的几个部分. -Server下:非堆包括:持久代和代码缓存(Code cache) -client下:非堆包括:持久代.代码

JVM性能调优2:JVM性能调优参数整理

本系列包括: JVM性能调优1:JVM性能调优理论及实践(收集整理) JVM性能调优2:JVM性能调优参数整理 JVM性能调优3:JVM_堆溢出分析过程和命令 JVm性能调优4:GC日志分析 JVM性能调优5:Heap堆分析方法  序号 参数名 说明 JDK 默认值 使用过 1 JVM执行模式 2 -client -server 设置该JVM运行与Client 或者Server Hotspot模式,这两种模式从本质上来说是在JVM中运行不同的JIT(运行时编译模块)代码,并且两者在JVM内部

深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)视频教程

14套java精品高级架构课,缓存架构,深入Jvm虚拟机,全文检索Elasticsearch,Dubbo分布式Restful 服务,并发原理编程,SpringBoot,SpringCloud,RocketMQ中间件,Mysql分布式集群,服务架构,运 维架构视频教程 14套精品课程介绍: 1.14套精 品是最新整理的课程,都是当下最火的技术,最火的课程,也是全网课程的精品: 2.14套资 源包含:全套完整高清视频.完整源码.配套文档: 3.知识也 是需要投资的,有投入才会有产出(保证投入产出比是

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求.本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用.本文参考了网上很多资料,难以一一列举,在此对这些资料的

[转]JVM性能调优监控工具

http://my.oschina.net/feichexia/blog/196575?p=1#comments JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解. 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解. 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解(转VIII)

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解. 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的

JVM 性能调优实战之:一次系统性能瓶颈的寻找过程

玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈.性能优化分为好几个层次,比如系统层次.算法层次.代码层次...JVM 的性能优化被认为是底层优化,门槛较高,精通这种技能的人比较少.笔者呆过几家技术力量不算弱的公司,每个公司内部真正能够进行 JVM 性能调优的人寥寥无几.甚至没有.如是乎,能够有效通过 JVM 调优提升系统性能的人往往被人们冠以"大牛"."大师"之类的称呼.其实 JVM 本身给我们提供了很多强大而有效的监

(转)JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

转:https://my.oschina.net/feichexia/blog/196575?p=3 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求.本文将对一些常用的JVM