zoukankan      html  css  js  c++  java
  • tomcat原理和优化

    概念和原理

    Connector组件

    • 接受客户端连接
    • 加工处理客户端请求

    Container组件

    • 所有子容器的父接口
    • 责任链设计模式

    在看一下tomcat端口配置:

    8005:监听tomcat关闭的请求

    8080:http请求

    8009:和其他http建立连接

    修改tomcat内存:

    java的内存分为

      1.堆内存

      2.栈内存

      3.静态内存区(持久区,不会被gc回收)

    内存溢出:OutOfMemoryError:Java head space异常

    jvm默认内存大小最小为服务器内存的1/64,最大内存为1/4;

    静态内存区已满:

    内存溢出:OutOfMemoryError:PermGen space异常

    jdk8以后不会出现这个异常;因为将类存放在Metaspace空间(元空间)

    元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制,但可以通过以下参数来指定元空间的大小:

      -XX:MetaspaceSize,初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
      -XX:MaxMetaspaceSize,最大空间,默认是没有限制的。

      除了上面两个指定大小的选项以外,还有两个与 GC 相关的属性:
      -XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为分配空间所导致的垃圾收集
      -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集

    死循环或者无限递归

    StackOverflowError

     set JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"

    堆设置大,GC回收比较慢,频率低

    堆设置小,GC回收比较块,频率高

    配置热部署:

    <Context debug="0" path="/xxxxdemo" docBase="F:xxxx" reloadable="true"></Context>

    debug设置的值越大,log输出的就越详细,没有设置默认为0

    reloadable:自动加载新增活修改的文件,一般会重启

    path:项目名称

    docBase:项目路径

  • 相关阅读:
    解决VS Code调试.NET Core应用遇到的坑
    .NET Core第三方开源Web框架YOYOFx
    【干货】”首个“ .NET Core 验证码组件
    .NET Core爬坑记 1.0 项目文件
    细说ASP.NET Core与OWIN的关系
    dock基本使用
    在VS中使用TinyFox调试OWIN应用(转)
    正则表达式的匹配
    构建乘积数组
    数组中重复的数字
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10796424.html
Copyright © 2011-2022 走看看