Linux修改catalina.sh文件

如: JAVA_OPTS=”-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -verbose:gc -Xloggc:${CATALINA_HOME}/logs/gc.log`date +%Y-%m-%d-%H-%M` -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -noclassgc”

如: JAVA_OPTS="-server -Xms5120m -Xmx5120m -Xss256k"

堆(Heap)和非堆(Non-heap)内存

按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。

堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

JVM内存限制(最大值)

首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后tomcat可以启动,而有些机器无法启动?

通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:

1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

linux 查看java_opts_java_opts 参数与JVM内存调优相关推荐

  1. java_opts 参数与JVM内存调优

    Linux修改catalina.sh文件 如: JAVA_OPTS="-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSi ...

  2. JVM内存调优原则及几种JVM内存调优方法

    JVM内存调优原则及几种JVM内存调优方法 1.堆大小设置. 2.回收器选择. 1.在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因 ...

  3. 教会你如何进行JVM内存调优

    一.前提 JVM性能调优牵扯到各方面的取舍与平衡,往往是牵一发而动全身,需要全盘考虑各方面的影响.在优化时候,切勿凭感觉或经验主义进行调整,而是需要通过系统运行的客观数据指标,不断找到最优解.同时,在 ...

  4. JVM内存调优 -Xms -Xmx -Xmn -Xss 参数设置

    案例 -Xms128M: 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx512m: 是指设定程序运行期间最大堆的大小.如果程序运行需要占用更多的内存,超出了这个设置值 ...

  5. linux查看kafka状态_Linux Page Cache调优在Kafka中的应用

    本文主要描述Linux Page Cache优化的背景.Page Cache的基本概念.列举之前针对Kafka的 IO 性能瓶颈采取的一些解决方案.如何进行Page Cache相关参数调整以及性能优化 ...

  6. 详解:JVM内存调优参数

    分享一波:程序员赚外快-必看的巅峰干货 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G.默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的 ...

  7. JVM内存调优参数概要

    逝者如斯夫,不舍昼夜. -server JVM的server模式,64位版本只支持server模式. -Xmx 指定堆所分配内存的最大值. -Xms 指定堆所分配内存的初始值. -Xmn 指定堆的年轻 ...

  8. JVM内存调优之GC算法

    初识JVM JVM简介 虽然理解JVM不是开发或运行Java程序的必要条件,但是多了解一些JVM知识,那么就可以避免很多性能上的问题. Java虚拟机(JVM)指的是Java应用的运行环境,从一般意义 ...

  9. 一份关于jvm内存调优及原理的学习笔记

    JVM 一.虚拟机的基本结构 1.jvm整体架构 类加载子系统:负责从文件系统或者网络中加载class信息,存入方法区中. 方法区(Perm):存放加载后的class信息,包括静态方法,jdk1.6以 ...

  10. 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

    1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...

最新文章

  1. 用简单的C语言实现多任务轮流切换(模拟操作系统线程机制)【转】
  2. 30天敏捷生活(9-11):调整30天的节奏
  3. highcharts图标插件详解一
  4. C++赋值运算符重载【C++赋值运算符重载】
  5. PP模块常用事务代码清单
  6. SAP 错误日志的调查
  7. FreeMarker标签与使用
  8. 7-3 模板题 (10 分)(思路+详解)
  9. python预测疾病_吴裕雄--天生自然python机器学习:使用Logistic回归从疝气病症预测病马的死亡率...
  10. win10电脑浏览器哪个好_电脑WinXP、Win7和Win10,哪个操作系统最好用?
  11. ZeroMQ之Request/Response (Java)
  12. Excel中换行的问题
  13. 程序员圈 内的 鄙视链
  14. sourceTree使用说明(四)
  15. 代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和
  16. PHP SDK for sinaweibo
  17. 对于代码复现学习的一些理解||计算机研究生学习笔记||经验分享||深度学习||pytorch||不定期长期更新
  18. 百度地图RichMarker富标记点
  19. (十一)在线编辑模块(FreeTextBox插入图片,内容保存到数据库)
  20. 两种方式创建纯代码的 iOS 项目,不使用 storyboard

热门文章

  1. 运放参数的详细解释和分析压摆率SR
  2. 送给python初学者在简单编程练习题中的小技巧
  3. Maven第5篇:手把手教你搭建私服
  4. Web_php_unserialize,XCTF-Web_php_unserialize
  5. 转贴:Spring vs. EJB
  6. Python获取基金收益计算
  7. JAVA判断访问设为是否为手机、苹果、微信
  8. curl_getinfo函数
  9. echarts-南丁格尔图
  10. 计算机病毒的防治方法不包括,计算机病毒的防治方法