项目上线,性能优化有个重要组成就是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. Android系统层次解析

    目标:从宏观上解释Android整个系统结构 来源: <Android4高级编程> 目录: 1. Android软件栈结构 一.Android软件栈结构 Android软件栈分为四个结构: ...

  2. Fragment基础操作

    Fragment和Activity类似,同样是具备UI的属性:也就是都能用于规划UI布局... Building a Dynamic UI with Fragments --> Fragment ...

  3. Torch功能点记录

    1. Numpy矩阵转换Tensor: tensor_num = torch.from_numpy(numpy_arr)

  4. NOIP-扫雷游戏

    题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有 ...

  5. 5. 箭头函数_this 指向_es6 常用语法

    1. 箭头函数 函数的简写方式 () => {} 只有一个参数时,可以省略() ---- x => {} 只有一条语句时,可以省略{},此时这点语句的结果会作为函数的返回值返回  () = ...

  6. jenkins-参数化构建(一)

    一.默认自习shell 二.参数化构建过程

  7. 转载Alpine Linux常用命令

    Alpine Linux常用命令 目录 一:Alpine Linux开启SSH远程登陆 1.简介: 2.配置 3.配置命令 4.重启服务 二:Alpine Linux源管理 1.简介 2.国内源简介: ...

  8. Server response error code:404, error:{"ret":-1, "msg":"invalid appkey"}

    Server response error code:404, error:{"ret":-1, "msg":"invalid appkey" ...

  9. ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解: ST表板子 代码: #include<cstdio> #include<cstring&g ...

  10. 新装的centos怎样显示中文界面

    默认的显示英文界面,即使各种配置中都选择的chinese也没用,默认显示的还是英文. 要在终端输入 vim ~/.bashrc 编辑本用户配置文件 打开后最后一行加入 export LANG=&quo ...