CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文切换 通常所说的CPU使用率过高,隐含着一个用来比较高与低的基准值,比如 JVM在峰值负载下的平均CPU利用率40% CPU使用率飙到80%就可认为不正常 JVM进程包含多个Java线程: 一些在等待工作 另一些则正在执行任务 最重要的是找到哪些线程在消耗CPU
1 简单工厂模式 当A对象需要调用B对象的方法时,我们需要在A中new一个B的实例,我们把这种方式叫作硬编码耦合,缺点是一旦需求发生变化,比如需要使用C类来代替B时,就要改写A类的方法。 假如应用中有上千个类以硬编码的方式耦合了B,改就很头疼。于是有了简单工厂模式,又叫静态工厂方法,就是由一个工厂类根据传入参数,动态决定应该创建哪个产品类。 Spring中的BeanFactory就是简单工厂模式
若观察到Tomcat进程CPU使用率较高,并在GC日志中发现GC次数比较频繁、GC停顿时间长,说明需优化GC。 CMS和G1是时下使用率比较高的两款垃圾收集器,从Java 9开始,G1是默认垃圾收集器。 CMS vs G1 CMS收集器 将Java堆分为新生代(Young)或老年代(Old),因为研究表明,超过90%的对象在第一次GC时就被回收掉,仅少数对象会存活较长。CMS还将新生代内存空间分
线程分类 Tomcat启动的线程和Web应用本身启动的线程: Tomcat线程池中的线程会调用Servlet#service,叫Tomcat线程 Web程序在service方法的实现里启动的新线程,叫Web应用线程 当一个新请求到达,Tomcat会从线程池取一个线程处理,该线程会调用你的Web应用,Web应用在处理请求过程中,Tomcat线程会一直阻塞,直到Web应用处理完,才输出响应,最后To
Java Socket网络编程常见的异常有哪些,然后通过一个实验来重现其中的Connection reset异常,并且通过配置Tomcat的参数来解决这个问题。 异常场景 java.net.SocketTimeoutException 超时异常,超时分为 连接超时在调用Socket.connect方法的时候超时,大多因为网络不稳定 读取超时调用Socket.read方法时超时。不一定是因为网络延
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号