项目上线,性能优化有个重要组成就是jvm内存分配和垃圾回收机制的管理配置。

网上随便能搜到相关的具体步骤,以及内存中各种参数对应的意义,不再赘述。

干货就是直接抛出遇到的问题,以及如何解决的,再说说待探索的地方:

Linux【我用的centos6.7】下设置很顺利,直接通过vi修改服务器tomcat的bin/catalina.sh文件,在文件注释结束的第一行增加如下设置:
JAVA_OPTS=’-Xmx4000M
-Xms4000M
-Xmn600M
-XX:PermSize=500M
-XX:MaxPermSize=500M
-Xss256K
-XX:+DisableExplicitGC
-XX:SurvivorRatio=1
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly’

重启tomcat服务即可生效,具体可在监控页面查看。

Windows环境中出现了问题,根据很多分享的文章,修改“%TOMCAT_HOME%\bin\catalina.bat”文件,有的说是在文件开头增加如下设置:
set JAVA_OPTS=-Xms256m -Xmx512m 有的说是在echo Using CATALINA_HOME:   "%CATALINA_HOME%"的下一行或下一行,有的说是echo Using CATALINA_BASE:   "%CATALINA_BASE%"的下一行或上一行,但真的配置后重启,要么是启动闪退,要么是启动后的参数没有生效。

解决:

在“%TOMCAT_HOME%\bin\catalina.bat”文件文件中的“rem Guess CATALINA_HOME if not defined”注释行下面,直接添加set JAVA_OPTS=-Xms256m -Xmx512m······之类参数。

重启tomcat,通过监控页面查看,生效!

待解决的问题:添加-Xmn2048m参数,会导致启动闪退,去掉后可以成功,至今还没找到原因,可能跟Windows中其他设置冲突,所以我们当前的生产环境全部为centos。

如果有朋友知道如何解决,希望能留言告知一下。也希望总结的这个问题能帮助到一些朋友。

JVM内存分配与垃圾回收机制管理的更多相关文章

  1. 浅谈JVM内存分配与垃圾回收

    大家好,我是微尘,最近又去翻了周志明老师的<深入理解Java虚拟机>这本书.已经看了很多遍了,每次都感觉似乎看懂了,但没过多久就忘了.这次翻了第三章的垃圾收集器与内存分配策略,感觉有了新的 ...

  2. JVM 内存分配和垃圾回收(GC)机制

    一  判断对象是否存活 垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“活着”,哪些已经"死去”,即不能再被任何途径使用的对象. 1.1 引用计数法 (Reference ...

  3. 【Java_基础】JVM内存模型与垃圾回收机制

    1. JVM内存模型 Java虚拟机在程序执行过程会把jvm的内存分为若干个不同的数据区域来管理,这些区域有自己的用途,以及创建和销毁时间. JVM内存模型如下图所示 1.1 程序计数器 程序计数器( ...

  4. JVM内存模型及垃圾回收机制

    http://blog.csdn.net/zhangpengju999/article/details/11773183 JVM垃圾回收机制 分代垃圾回收 不同的对象生命周期不同.与业务信息有关的对象 ...

  5. JVM内存分配和垃圾回收以及性能调优

    JVM内存分配策略 一:堆中优先分配Eden 大多数情况下,对象都在新生代的Eden区中分配内存.而新生代会频繁进行垃圾回收. 二:大对象直接进入老年代 需要大量连续空间的对象,如:长字符串.数组等, ...

  6. Java 内存分配及垃圾回收机制初探

    一.运行时内存分配 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则 ...

  7. Java内存分配及垃圾回收机制(未完待待续)

    Java内存区域 1.内存区域 jvm运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 方法区 Java堆 大图 2.概念解释 程序计数器   线程私有的一块很小的内存空间,它是当前线程所执行 ...

  8. Java内存分配及垃圾回收机制

    Java内存区域 1.内存区域 jvm运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 方法区 Java堆 大图 2.概念解释 程序计数器   线程私有的一块很小的内存空间,它是当前线程所执行 ...

  9. 巩固java(二)----JVM堆内存结构及垃圾回收机制

    前言:        我们在运行程序时,有时会碰到内存溢出(OutOfMemoryError)的问题,为了解决这种问题,我们有必要了解JVM的内存结构和垃圾回收机制. 正文: 1.JVM堆内存结构   ...

随机推荐

  1. jade模版js中接收express的res.render

    router: router.get('/', function(req, res, next) { res.render('index', { title:{name:'aaa',age:23} } ...

  2. with(window) onload=onresize=function(){} 写法

    with(window) onload=onresize=function(){} 写法 with的用法: with(对象A) { 语句块 } 语句块中可以直接使用 对象A中的属性和方法 ------ ...

  3. Ubuntu软件安装与卸载

    ubuntu软件安装与卸载 更新Ubuntu软件下载地址 1. 寻找国内镜像源 所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的91手机助手:iOS手机上可以下载软件 ...

  4. NOIP 2017 解题报告

    ---恢复内容开始--- NOIP 2017 的题真的很难啊,怪不得当年我这个萌新爆零了(当然现在也是萌新)越学越觉得自己什么都不会. 想要成为强者要把这些好题都弄懂弄透 至少现在6道题我都比较陌生 ...

  5. TypeScript初探

    TypeScript初探 TypeScript什么? 官方给的定义:TypeScript是一种由微软开发的自由和开源的编程语言,它是JavaScript类型的超集,可以编译成纯JavaScript,本 ...

  6. 线性表->顺序存储

    文字描述: 用一组地址连续的存储单元依次存储线性表的数据元素,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构. 即是,线性表的顺序存 ...

  7. python基础知识巩固(os.walk)

    python 3 os.walk语法 os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下 os.walk(top,[, topdown=True],[, onerror= ...

  8. django 缓存信号等

    参考别人的博客:写的挺好 http://www.cnblogs.com/wupeiqi/articles/5246483.html

  9. 好的UI管理后台

    1,https://www.v2ex.com/t/513539 - https://github.com/a54552239/projectManage

  10. Es6的用法

    var callBack=[]; // 这个等于是个闭包,i会累加到3在做运算,所以结果都是6 ;i<=;i++) { callBack[i]=function(){ ; } } console ...