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. Android studio 使用心得(六)---android studio 如何加载.so文件
  2. linux下删除乱码文件、目录
  3. Spark的RDD持久化
  4. 类似Tinder APP的配对逻辑
  5. Unable to compile class for JSP的解决方法
  6. 2021考研 计算机国家线解读及对应策略
  7. VMware 虚拟上网的的三种模式 ——bridged、host-only、NAT 模式
  8. linq学习笔记(1):c#3.0新特性(2)
  9. python范围运算符_Python的海象运算符
  10. 超级详细的IDEA设置Java类和方法的注释模板
  11. 京瓷打印机p5026cdn_京瓷p5026cdn驱动下载-京瓷p5026cdn打印机驱动v2.0.1421 官方版 - 极光下载站...
  12. 分享几个HIFI音乐下载网站
  13. translateY鼠标hover触发动(上下移动) - 代码案例篇
  14. 工具|2021年十大扫描漏洞工具
  15. 4399c++游戏开发2023届实习笔试
  16. 淘气的小丁-抽奖小游戏
  17. Makefile wildcard
  18. 今年云计算的主要趋势,混合云/边缘计算/Serverless
  19. STM32F4_外部中断详解(EXTI)
  20. Yolov3 mAp计算,吐血整理,含Bug处理

热门文章

  1. 国产cpu芯片架构和指令集
  2. android自动签约续费功能,微信代扣 Android 开发流程
  3. 启动kafka时报错:java.nio.file.FileSystemException,另一个程序正在使用此文件,进程无法访问。
  4. 关于代码运行速度与cpu关系的一点小事
  5. c语言中提取单词首字母,C语言实现单词小帮手
  6. python画八卦图的指令_你会画先天八卦图吗?只要知道了每个卦的方位,画起来其实很简单...
  7. 学习笔记 Tianmao 篇 FragmentTabHost (TabHost升级版)
  8. 中国内地LCD液晶屏原材料仍正在发展中(二)
  9. 【电力电子技术】浅析IR2110自举电路
  10. asp.net学习心得总结