java面试题/认证答辩 --- tomcat面试题

参考:

> https://blog.csdn.net/weixin_39222112/article/details/81316511
> https://zhuanlan.zhihu.com/p/144693534
> https://blog.csdn.net/weixin_45947267/article/details/106802610
  1. tomcat为什么要破坏双亲委派?
    什么是双亲委派?
    ① 当前ClassLoader首先从自己已经加载的类中查找此类是否已加载,如已加载直接返回已加载的类(每个类加载器都有自己的缓存,当一个类被加载后就会放入缓存,等下次加载的时候直接返回)
    ② 当ClassLoader在缓存中没有找到被加载的类时,委托父类加载器去加载,父类加载器在自己的缓存中没有找到,就会委托自己的父类去加载,直到bootstrp ClassLoader(启动类加载器)
    ③ 如果bootstrp ClassLoader(启动类加载器),也没找到这个类, bootstrpClassLoader就会委托自己的字类加载器去加载这个类
    ④如果子类加载器没找到,就找子类加载器的子类加载器, 直到最后一个字类加载器也加载不到就会报出ClassNotFound
    注意: 双亲委派时java的推荐机制并不是强制机制
    如果想打破双亲委派, 可以继承java.lang.ClassLoader类实现自己的类加载器,重写loadClass方法
    tomcat为什么打破双亲委派?
    Tomcat 为了实现隔离性,没有遵守双亲委派模型,每个WebAppClassLoader加载自己的目录下的class文件,不会传递给父类加载器。

  2. Tomcat如何进行调优
    tomcat运行依赖于JVM 所以我们可以把优化分为tomcat自身优化和JVM优化

jvm调优:
对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。
full GC原因:
老年代被写满
持久代被写满
System.gc()被显示调用
JVM调优参考:
① 为了防止垃圾回收器在最小和最大直接收缩,通常把-Xms -Xmx设定成一样大小
② 年轻代和老年代按照默认比例1:2分配内存
更大的年轻代必然导致更小的年老代,大的年轻代会延长普通GC的周期,但会增加每次GC的时间;小的年老代会导致更频繁的Full GC
2)更小的年轻代必然导致更大年老代,小的年轻代会导致普通GC很频繁,但每次的GC时间会更短;大的年老代会减少Full GC的频率

tomcat调优参考:
Tomcat 连接器的三种方式: bio、nio 和 apr(最优 系统安装 Apr 库,否则就会使用 bio 方式)
maxThreads: 客户请求最大线程数
minSpareThreads: Tomcat初始化时创建的 socket 线程数
maxSpareThreads: Tomcat连接器的最大空闲 socket 线程数
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout: 连接超时
minProcessors: 服务器创建时的最小处理线程数
maxProcessors: 服务器同时最大处理线程数
compression: 打开压缩功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值