• Tomcat 启动内存修改


    内存修改文件

    • Windows 文件 /bin/catalina.bat
    • Linux 文件 /bin/catalina.sh

    方法一

    # 设置参数
    JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
    
    # Windos 下
    set "JAVA_OPTS=-Xms1024m -Xmx1024m"
    
    # Linux 下
    JAVA_OPTS="-Xms1024m -Xmx1024m"

    方法二

    # 环境变量中设置
    变量名:JAVA_OPTS
    变量值:-Xms256m -Xmx512m

    方法三

    # 无catalina文件
    1、打开tomcatHome//bin//tomcat5w.exe
    2、点击Java选项卡、Initial memory pool和Maximum memory pool.Initial memory pool这个就是初始化设置的内存的大小。
    3、Initial memory pool初始内存大小,Maximum memory pool这个是最大内存的大小。设置内存大小。
    4.重启

    标注:
    
    另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试的过程中出现。   如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究 垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
    
    一个要注意的地方:建议把内存的最高值跟最低值的差值缩小,不然会浪费很多内存的, 最低值加大 ,最高值可以随便设,但是要根据实际的物理内存 ,如果内存设置太大了,比如设置了512M最大内存,但如果没有512M可用内存,Tomcat就不能启动,还有可能存在内存被系统回收,终止进程的情况。

    进阶修改

    Linux:JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m"  
    Windos:set "JAVA_OPTS=-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m"
    
    -server:启用 JDK的 server 版本;
    -Xms:Java虚拟机初始化时堆的最小内存,一般与 Xmx配置为相同值,这样的好处是GC不必再为扩展内存空间而消耗性能;
    -Xmx:Java虚拟机可使用堆的最大内存;
    -XX:PermSize:Java虚拟机永久代大小;
    -XX:MaxPermSize:Java虚拟机永久代大小最大值;

    查看内存方法

    jmap:观察运行中的JVM 物理内存的占用情况,包括Heap size , Perm size 等。

    # 获取JAVA 随机PID号2340,进入tomcatin目录 使用jmap查看
    bin> jmap -heap 2340
    # 输出
    Attaching to process ID 3624, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.161-b12
    
    using thread-local object allocation.
    Mark Sweep Compact GC
    
    Heap Configuration:
       MinHeapFreeRatio         = 40
       MaxHeapFreeRatio         = 70
       MaxHeapSize              = 1073741824 (1024.0MB)    # 最大内存堆
       NewSize                  = 357892096 (341.3125MB)
       MaxNewSize               = 357892096 (341.3125MB)
       OldSize                  = 715849728 (682.6875MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 0 (0.0MB)
    
    Heap Usage:
    New Generation (Eden + 1 Survivor Space):
       capacity = 322109440 (307.1875MB)
       used     = 57648256 (54.9776611328125MB)
       free     = 264461184 (252.2098388671875MB)
       17.89710230162767% used
    Eden Space:
       capacity = 286326784 (273.0625MB)
       used     = 22126856 (21.10181427001953MB)
       free     = 264199928 (251.96068572998047MB)
       7.727833104149977% used
    From Space:
       capacity = 35782656 (34.125MB)
       used     = 35521400 (33.87584686279297MB)
       free     = 261256 (0.24915313720703125MB)
       99.26988091660944% used
    To Space:
       capacity = 35782656 (34.125MB)
       used     = 0 (0.0MB)
       free     = 35782656 (34.125MB)
       0.0% used
    tenured generation:
       capacity = 715849728 (682.6875MB)
       used     = 66843680 (63.747100830078125MB)
       free     = 649006048 (618.9403991699219MB)
       9.337669260104825% used
    
    23902 interned Strings occupying 2743376 bytes.

  • 相关阅读:
    使用npm安装一些包失败了的看过来(npm国内镜像介绍)(解决生成空的abp模板项目一直卡在还原cpm包中)
    .NET CORE 发布到IIS问题 HTTP ERROR 500.30
    .NET Core默认不支持GB2312,使用Encoding.GetEncoding(“GB2312”)的时候会抛出异常。
    .net c# 文件分片/断点续传之下载--客户端
    aspnetcore 实现断点续传
    C# 反射获取属性值、名称、类型以及集合的属性值、类型名称
    C# 3Des两种加密方式 (对应java中的desede/CBC/PKCS5Padding加密)
    Asp.NetCore3.1中多次读取Request.Body
    ASP.NET Core 2.0系列学习笔记-DI依赖注入
    C# Newtonsoft.Json JObject合并对象整理
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/9156697.html
Copyright © 2020-2023  润新知