最近在一次搭建公司系统运行环境的时候tomcat总是报出
java.lang.OutOfMemoryError PermGen space
的问题,即内存溢出
在解决这个问题的时候

一.问题解决

此处用到一个命令:jmap
显示java堆中的详细信息(进程号7180)

C:\Users\zhangyu>jmap -heap 7180
Attaching to process ID 7180, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.45-b01using thread-local object allocation.
Parallel GC with 4 thread(s)Heap Configuration:MinHeapFreeRatio = 40MaxHeapFreeRatio = 70MaxHeapSize      = 1004535808 (958.0MB) //最大堆大小,默认为物理内存的1\4NewSize          = 1310720 (1.25MB)MaxNewSize       = 17592186044415 MB   //64位操作系统理论无限制OldSize          = 5439488 (5.1875MB)NewRatio         = 2SurvivorRatio    = 8PermSize         = 21757952 (20.75MB) //非堆区大小MaxPermSize      = 85983232 (82.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 163119104 (155.5625MB)used     = 1433824 (1.367401123046875MB)free     = 161685280 (154.19509887695312MB)0.8790043378364805% used
From Space:capacity = 65536 (0.0625MB)used     = 0 (0.0MB)free     = 65536 (0.0625MB)0.0% used
To Space:capacity = 8060928 (7.6875MB)used     = 0 (0.0MB)free     = 8060928 (7.6875MB)0.0% used
PS Old Generationcapacity = 669712384 (638.6875MB)used     = 89397320 (85.25592803955078MB)free     = 580315064 (553.4315719604492MB)13.348613843162859% used
PS Perm Generationcapacity = 85983232 (82.0MB)used     = 85983168 (81.99993896484375MB)free     = 64 (6.103515625E-5MB)99.99992556688262% used

可以发现 Perm Generation 明显不够用,因此需要增大该空间

-XX:PermSize=128M
-XX:MaxPermSize=256M

而在上一篇文章中,对JVM的内存说明并不是很详细
补充以下:

二.JVM内存

1.整体内存可以分为堆区和非堆区
堆区
所有new的对象都在堆区
新生代、中生代、老年代源自于对堆区的细分
Java中每新new一个对象所占用的内存空间就是新生代的空间,当java垃圾回收机制对堆区进行资源回收后,那些新生代中没有被回收的资源将被转移到中生代,中生代的被转移到老生代。
-XX:MaxNewSize=518 等是对新生代的最大值进行设置

非堆区:
包括持久带, 用来存放静态文件,如Java类、方法等。

几个参数:
1.堆(Heap)内存分配
-Xms : 初始堆大小
-Xmx: 最大堆大小,可设置为与Xms一样
-XX:NewSize=n:设置年轻代大小

2.堆(Heap)内存分配
-XpermSize = n
-XMaxPermSize = n
注意-XMaxPermSize和-Xmx的总和不能超过物理机的最大内存值

参考:
https://www.cnblogs.com/koik/p/4452029.html
JVM参数解析

记一次JVM调优(Permanent Generation)相关推荐

  1. JVM 调优 2:GC 如何判断对象是否为垃圾,三色标记算法应用原理及存在的问题?

    文章目录 前言 一.如何判断一个对象是否为垃圾? 1.1.reference count(引用计数) 1.2.reference count(引用计数)存在的问题 二.Root Searching(根 ...

  2. 记一次简单的 JVM 调优经历

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://zhenbianshu.github.io 背景 最近对负责的项目进行了一次性能优化,其中包括对 JVM 参数 ...

  3. jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    2019独角兽企业重金招聘Python工程师标准>>> 文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我 ...

  4. JVM调优总结(五)-分代垃圾回收详述1

    为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象, ...

  5. 大型跨境电商 JVM 调优经历

    大型跨境电商 JVM 调优经历 前提: 某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner.经 ...

  6. JVM调优总结(4):分代垃圾回收

    原文出处: pengjiaheng 为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java ...

  7. JVM调优:运行参数,内存模型,mat、jps、jstat、jmap、jstack、jvisualvm工具的使用

    JVM调优 - 工具篇 作者:张学亮 讲解内容 了解下我们为什么要学习JVM优化 掌握jvm的运行参数以及参数的设置 掌握jvm的内存模型(堆内存) 掌握jamp命令的使用以及通过MAT工具进行分析 ...

  8. JVM从入门到精通(六):JVM调优必备理论知识 - 3种垃圾清除算法,常见的垃圾回收器

    JVM调优是一层窗户纸,只是看起来很难.学完本节课,让你: 熟悉 GC 常用算法,熟悉常见垃圾回收器,具有实际 JVM 调优实战经验 What is garbage 什么是垃圾?没有引用指向的对象就是 ...

  9. jvm系列(四):jvm调优-命令篇

    运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ...

最新文章

  1. 【转载】Python 深入浅出支持向量机(SVM)算法
  2. js中用到的正则表达式
  3. 云服务器 架设传奇_传奇手游-战神引擎架设教程
  4. 射频系统基础知识总结
  5. jQuery EasyUI使用教程之创建展开行详细编辑表单的CRUD应用
  6. 代码合并工具_合并上千个Excel表格,1秒就能完成
  7. volatile和原子操作
  8. 【题解】狼和羊-C++
  9. csdn下载码怎么用?
  10. Touch Panel 调试技巧 01
  11. FPGA:调试报错Error:add_1 must be in range [-1,DEPTH-1]解决办法和调试思路
  12. ModBus那些傻傻分不清
  13. 我是如何来进行项目管理-时间管理的
  14. 【linux内核分析与应用-陈莉君】动手实践--内核多任务并发实例
  15. APP 的开发费用标准是什么?
  16. AppScan--图解web扫描工具IBM Security AppScan Standard
  17. jquery,ajax动态从数据库加载数据并自动选中复选框
  18. 设计师需要的知识体系
  19. Unity(12)-场景切换
  20. DevTools 无法加载 SourceMap 错误:状态代码 404,netERR_HTTP_RESPONSE_CODE_FAILURE

热门文章

  1. 合肥计算机函授专业,2015年想学电脑,合肥哪个学校比较好点,中国计算机函授学院怎么样?...
  2. 教你如何搭建本地私有云
  3. 【Scala教程】如何在已掌握的Java知识基础上快速上手Scala?【个人学习记录】
  4. team网卡绑定以及模式切换
  5. 移动OA:企业微信和传统OA厂商APP如何选择?
  6. 用Windows Live Writer写CSDN博客和网易博客
  7. mysql查询数量语句_mysql语句统计总数_一条sql语句实现统计查询_MySQL
  8. 北大集训2019垫底记
  9. Objective-C 内存管理之dealloc方法中变量释放处理
  10. 庄树松勇挫老将黄海刚 硬汉将复仇伊泽波人