1)服务器:安装了服务器软件的计算机
2)服务器软件:接收用户的请求,处理请求,做出响应
3)web服务器软件:在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
1) webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
2) webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
3) JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
4) Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。
HTTP是协议规范HTML是超文本标记语言用来规范显示格式。
Tomcat 的2 个核心功能:
1) 处理Socket 连接,负责网络字节流与Request 和Response 对象的转化。
加载和管理Servlet,以及具体处理Request 请求。
2) Tomcat设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。
我们可以把连接器的功能需求进一步细化,比如:
监听网络端口。
接受网络连接请求。
读取请求网络字节流。
根据具体应用层协议(HTTP/AJP)解析字节流,生成统一的Tomcat Request对象。
将Tomcat Request对象转成标准的ServletRequest。
调用Servlet 容器,得到ServletResponse。
将ServletResponse转成TomcatResponse 对象。
将TomcatResponse 转成网络字节流。
将响应字节流写回给浏览器
---->综上得到三个高内聚的功能
1.网络通信。
2.应用层协议解析。
3.Tomcat Request/Response与ServletRequest/ServletResponse的转化
1)首先,根据协议和端口号选定Service 和Engine
2)然后,根据域名选定Host
3)之后,根据URL 路径找到Context 组件
4)最后,根据URL 路径找到Wrapper(Servlet)
清理你的tomcat
清理不必要的Web应用
清理XML配置文件
清理JAR文件(web lib目录不应该出现servlet或者tomcat自身的jar包
清理其他文件(比如log日志,work目录下的class)
禁止 Tomcat TLD 扫描
关闭 WebSocket 支持
关闭 JSP 支持
禁止 Servlet 注解扫描
并行启动多个 Web 应用
CMSvs G1,G1的两大特点:
(1)G1可以并发完成大部分GC的工作,这期间不会“Stop-The-World”。
(2)G1使用非连续空间,这使G1 能够有效地处理非常大的堆。此外,G1可以同时收集年轻代和年老代。G1并没有将Java堆分成三个空间(Eden、Survivor和Old),而是将堆分成许多(通常是几百个)非常小的区域。这些区域是固定大小的(默认情况下大约为2MB)。每个区域都分配给一个空间。G1 收集器的Java 堆如下图所示
问题:
1.什么是内存泄漏
2.什么是内存溢出(java.lang.OutOfMemoryError:Java heap space)
1)内存泄漏
2)配置问题
3)过度使用finalize
gc问题的分析与解决
1. 使用jstat命令观察gc的过程
2. 通过GCViewer 工具查看GC 日志,用GCViewer 打开程序指定输出的gc.log,会看到这样的图:
3. 为了找到内存泄漏点,我们通过jmap 工具生成Heap Dump:
jmap -dump:live,format=b,file=94223.bin94223
4. 用Eclipse MemoryAnalyzer 打开Dump文件,通过内存泄漏分析,得到这样一个分析报告:
从报告中可以看到,JVM内存中有一个长度为4000 万的List,至此我们也就找到了泄漏点。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129960.html
摘要:相关推荐,豆瓣评分,人评价本书介绍了在编程中条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。实战高并发程序设计推荐豆瓣评分,书的质量没的说,推荐大家好好看一下。 该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb... 【强烈推荐!非广告!】...
摘要:所以,所谓的自动装配,实际上就是如何自动将装载到容器中来。实际上在版本中,模块驱动注解的出现,已经有了一定的自动装配的雏形,而真正能够实现这一机制,还是在版本中,条件注解的出现。,我们来看一下的自动装配是怎么一回事。在前面的分析中,Spring Framework一直在致力于解决一个问题,就是如何让bean的管理变得更简单,如何让开发者尽可能的少关注一些基础化的bean的配置,从而实现自动装...
摘要:实战高并发程序设计推荐豆瓣评分书的质量没的说,推荐大家好好看一下。推荐,豆瓣评分,人评价本书介绍了在编程中条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。 很早就想把JavaGuide的书单更新一下了,昨晚加今天早上花了几个时间对之前的书单进行了分类和补充完善。虽是终极版,但一定还有很多不错的 Java 书籍我没有添加进去,会继续完善下去。希望这篇...
摘要:划下重点,服务容器是用于管理类的依赖和执行依赖注入的工具。类的实例化及其依赖的注入,完全由服务容器自动的去完成。 本文首发于 深入剖析 Laravel 服务容器,转载请注明出处。喜欢的朋友不要吝啬你们的赞同,谢谢。 之前在 深度挖掘 Laravel 生命周期 一文中,我们有去探究 Laravel 究竟是如何接收 HTTP 请求,又是如何生成响应并最终呈现给用户的工作原理。 本章将带领大...
阅读 1236·2023-01-11 13:20
阅读 1543·2023-01-11 13:20
阅读 996·2023-01-11 13:20
阅读 1654·2023-01-11 13:20
阅读 3958·2023-01-11 13:20
阅读 2456·2023-01-11 13:20
阅读 1290·2023-01-11 13:20
阅读 3456·2023-01-11 13:20