项目上线,性能优化有个重要组成就是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. 潭州课堂25班:Ph201805201 tornado 项目 第十二课 项目部署(课堂笔记)

    运行多个Tornado实例 网页响应不是特别的计算密集型处理 多个实例充分利用 CPU 多端口怎么处理 Linux 常见应用服务配置模式 nginx 和 supervisord:采用主配置文件 + 项 ...

  2. XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship

    A. Apple 按题意模拟即可. #include<stdio.h> #include<iostream> #include<string.h> #include ...

  3. BSUIR Open Finals

    A. Game with chocolates 因为差值必须是$P$的幂,故首先可以$O(\log n)$枚举出先手第一步所有取法,判断之后的游戏是否先手必败. 对于判断,首先特判非法的情况,并假设$ ...

  4. Java_String

    整理一下java中关于String的内容.Spring应该是java中使用最频繁的类了,那么今天我们仔细研究下关于Spring的内容. 定义: String类是一个字符串类型的类,使用"   ...

  5. __x__(42)0910第六天__表格布局 老旧的布局方法

    table 布局 不易于维护,耦合太严重了. 不利于搜索引擎检索. 效果图: html代码: <!doctype html> <html> <head> <m ...

  6. (78)Wangdao.com第十五天_JavaScript 面向对象

    面向对象编程(Object Oriented Programming,缩写为 OOP) 是目前主流的编程范式. 是单个实物的抽象, 是一个容器,封装了属性(property)和方法(method),属 ...

  7. requestAnimationFrame移动端实现回到顶部效果

    $('#backToTop').click(function(){ var dist = $(document).height() - $(window).height(); timer = requ ...

  8. String对象方法属性总结

    常用属性: constructor;length;prototype;(不在解释): 常用方法: charAt(index);返回指定位置的字符. concat(stringX);连接字符串. ind ...

  9. 第一次c++作业小结

    之前从未接触过c++,上完第一节课后也还是懵懵懂懂.当知道有作业要完成时,也是无从下手.在仔细阅读教材以及同学的帮助下,我了解了如何编写最简单的程序,也算是踏入c++的大门.希望自己的第一次作业能够符 ...

  10. 微信小程序开发的游戏《拼图游戏》

    微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({ /** * 页面的初始数据 */ data: { }, initGame: ...