• linux下tomcat指定jdk和配置运行参数


    一.指定运行jdk

    1)set classpath.sh和catalina.sh中写入:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_121
    export JRE_HOME=/usr/local/java/jdk1.8.0_121/jre/

    二.指定运行参数大小:

    1)catalina.sh中写入
    服务器配置 内存大小1G
    参考一:JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
    服务器配置 内存大小2G
    实际使用 JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m"

    三.参数详解

    export JAVA_OPTS= -Xms128m -Xmx512m 设置JAVA虚拟机的内存

    export CATALINA_OPTS= -Xms128m -Xmx256m 设置tomcat可以使用多少内存

    -Xms128m 【初始化内存大小】 128M
    -Xmx512m 【可以使用的最大内存】 512M

    四.查看堆大小

    在程序中查看,返回值单位是字节,当然还有其他JVM参数可以查看。

    Runtime.getRuntime().maxMemory();


    或者在命令行 执行jvisualvm 命令

    或者%java_home%in 目录下点击jvisualvm.exe

    或者在命令行执行jconsole 命令

    或者%java_home%in 目录下点击jconsole.exe

    五. java内存可以分为堆内存和非堆内存

    堆和非堆:堆是给开发人员用的,是在JVM启动时创建; 非堆是留给JVM自己用的,用来存放类型(类和接口)的信息。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者 tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多,热部署上几次就java.lang.OutOfMemoryError: PermGen space .

    ---- 堆内存设置:程序可以到达的,可以操作的
    -Xms 初始堆内存 默认物理内存1/64,也是最小分配堆内存。当空余堆内存小于40%时,会增加到-Xms的最大限制

    -Xmx 最大堆内存分配 默认物理内存1/4,当空余堆内存大于70%时,会减小到-Xms的最小限制。
    一般设置 -Xms和Xms大小相等

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

    六. 典型JVM参数设置:

    java -Xmx128m -Xms128m -Xmn64m -Xss1m

    -Xmx128m:设置JVM最大可用内存为128M。

    -Xms128m:设置JVM最小内存为128m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

    -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

    -Xss128k:设置每个线程的堆栈大小。 JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更 多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

  • 相关阅读:
    MVCCache2.应用程序缓存(Cache:1.输出缓存[2].应用程序缓存)
    接口和抽象类的区别和作用(功能、用途、好处)
    MVCCache1.输出缓存(Cache:[1].输出缓存2.应用程序缓存)
    JAVA中为什么要使用接口,继承接口不是还要重写方法吗?为什么不直接写那些方法呢?:::接口的最主要的作用是达到统一访问
    枚举的意义,用途,作用,用法,作用场景
    C++ compile multiple cpp and header files via I. cpp1.cpp cpp2.cpp o
    C++retrieve array via returned pointer,traverse the array pointer without the array size
    C++ pass array as pointer and sort in bubble
    C write and read file via FILE and open method in a+ or r mode
    C++ connection mysql and retrieve select sql result
  • 原文地址:https://www.cnblogs.com/zoulixiang/p/9516065.html
Copyright © 2020-2023  润新知