一、 深入理解Java虚拟机
JVM是一个用来模拟实际机器的计算机软件
JVM解释并运行Java语言编译后所形成的中间码
微软虚拟机曾经最快
Android也有虚拟机(不遵循sun的规范)
一次编译,多次运行(跨平台)、but still needs jvm form different platforms
² Jvm内存分配
1、 堆heap: 对象
2、 栈stack: 变量(在针上面,并指向堆中的对象,执行完pop出去)
3、 代码区:常量、类及其定义
C语言内存泄露(问题在栈stack)
GC(垃圾回收,同时带来负担,调优调GC)
GC收集是一个将程序不再使用的对象实例自动销毁并释放其所占用的资源的过程
垃圾收集只针对堆(heap)里的对象
Java平台的垃圾收集使程序员不需要手动管理对象的销毁过程,简化了开发,减少了造成内存泄露的可能。
Jvm的监控器:在bin中有诊断工具,jVisualVm.exe监控虚拟机运行情况
垃圾回收时间合理应控制在<5%
要不断的测试以调优性能。
要用大量的数据来发现问题。
² 垃圾收集方法的发展
1、 引用计数器法(有引用时加1,没引用时减1,检查堆中的对象的引用计数是否为0,是则释放掉。同时看GC什么时候运行。)
堆如果越大,GC要先扫描,则扫描时间更长。GC扫描时,会造成系统长时间的停顿。
优点:简单易用,速度快,CPU消耗低
问题:内存碎片问题(无法解决的)、堆越大时间越多、循环引用(如:双向链表,可扩展的集合。在树状列表,无法解决;对象a引用b,b引用c,c引用d,d引用a;引起内存泄露)
缺点:不能循环引用
2、 对象图法
对象引用遍历从一组对象开始,沿着整个对象图上的每条链接,递归确定可到达(reachable)的对象。如果某对象不能从这些根对象的一个(至少一个)到达,则将它作为垃圾收集。
步骤:
1. 标记(浏览对象图,并作标记,比较耗时)
2. 清除(删掉有删除标记的。)
3. 压缩(整理内存的过程,搬动内存的地址,匀出大块内存出来)
PS:不同虚拟机实现不同。安排不同的时间去安排工作。
优点:克服引用技术的缺点。解决循环引用。
缺点:执行速度较慢;会导致其它线程停顿。
(压缩的时候会独占,要重新赋值,其它线程不可以跑,导致整个虚拟机停顿。)
可能会同时运行。
S1=null;
对象图法—实现
1) 复制收集器(把声明的堆空间分成两半,当发现不够用时,把所有需要使用的对象按顺序搬到另一半b,原来的一半a则剩下的全是不用的,则删除,然后b再搬回)
问题:内存空间增长很快且不可消除时,如cache。利用率高,搬动无意义。
不可回收的对象增长得很快,本来分配1G,但因为分两半,实际可用512M,可能更快内存溢出。
适用性:存在大量临时性的占用内存的情况。
2) 增量收集器:分块收集,平均分成多少块,每一块均等。
3) 分代收集器:在前两种之后提出的方法。在上面的基础之上。
基础要点:每一块对象不同,在分块收集的前提下,某一块可能存放某一特征的对象。来减少垃圾回收的频度。
分成三块:大小不一样,每一块里边实施不同的算法,每一块收集不同类型的对象,新对象永远产生在第一块,可能:第一块1/4,第二块1/2,第三块1/4
第一块:可以简单的扫描算法(如引用计数算法),当第一块不够用时,则作一次扫描,则使用复制方法将“还需要用的”放到第二块中。则这时第一块可以清空。这样,第2,3块不需要使用垃圾收集。当第2块满时,则作一次更详细的扫描,再调到第3块(第3块则是很长时间存在的,一般会一直存在。)
如果第3块也满了,则要3块作一次整的垃圾收集了。
分代:集合了增量和复制收集的方法。减少垃圾收集的频度,减少对用户使用的影响。
堆如何进行分代的
有如下三种区域:使用不同的算法,运行效率不一样。
1) 年轻
2) 老年
3) 永久
java -jar tune_t001.jar 10000
二、JavaEE架构
1、 jdbc
1) 它是第一个面向企业的应用。
2) Java ee 应用中非常重要的
3) 其性能好坏常常决定整个系统的性能
Application àjdbc api)àJDBC Driver(规范)à上层Api、下层api
除非你知道数据库文件的格式及读取方法,才可绕过jdbc这一层。
2005年企业级系统不成熟,存在很多系统问题,容易down机或性能差。
再后来,框架成熟。
在Weblogic里调优,通过datasource来访问数据库,拿到我们的连接,再去访问数据库。
在这样的情况,weblogic才提供相应的监控手段。
如果对oracle熟悉,可以不用上面的,可以用oracle本身的监控工具。
可能问题:
1、 数据库连接不释放。(很容易监测,可以监测连接数,可以直接看oracle的连接数情况,max conection),现在很多orm框架(hibernate,ibatis)可以避免这个问题。
2、 连接缓冲池
3、 过于依赖数据库(用户使用页面,在什么页面放什么广告,
文件和数据库的性能是100倍的,静态化)
像facebook,他们不用数据库,性能太差。
² JNDI
问题:
1、 依赖网速带宽
2、 查找和认证用户时间比较多
² JTA(java transaction api)
需要跨越数据库的支持时,需要用到jta,属于global数据库,平常我们用的是local数据库
JPS:每秒事务数(loadrunner自己制定的事务数)
TPS:和上面是两回事
分享到:
相关推荐
- **JMX(Java Management Extensions)**:WebLogic使用JMX来监控服务器的性能指标,如CPU使用率、内存消耗等。 - **日志和诊断**:通过日志记录和诊断收集,可以分析和解决运行时问题。 6. **WebLogic集群与高...
WebLogic EJB学习笔记主要涵盖了企业级Java Bean(Enterprise JavaBeans,简称EJB)在Oracle WebLogic Server中的应用和管理。EJB是Java EE(Java Platform, Enterprise Edition)平台的核心组件,用于构建可扩展、...
- **JMX(Java Management Extensions)**:通过JMX,可以远程监控WebLogic服务器的运行状态和性能指标。 - **JFR(Java Flight Recorder)和JMC(Java Mission Control)**:高级监控工具,用于分析服务器性能和...
- **管理服务器与受管服务器**:WebLogic Server采用主从架构,管理服务器负责集群的管理和监控,而受管服务器则运行应用实例。 - **域**:是WebLogic Server组织资源的基本单位,包含了服务器、集群、数据源、JMS...
1. **上传应用程序文件**:通过WebLogic Console或命令行工具将应用程序文件(WAR或EAR包)上传到服务器。 2. **配置应用程序参数**:设置应用程序的启动顺序、安全性等参数。 3. **关联应用程序与服务器**:指定...
- **性能监控**: 通过WebLogic内置的管理控制台和其他工具来监控系统的运行状态,包括CPU利用率、内存使用情况、线程池状态等。 - **配置优化**: 如何合理设置服务器实例的参数,如堆大小、线程池大小、连接池大小等...
- 将JAVAEE应用打包为WAR或EAR文件,部署到云服务器上的应用服务器(如Tomcat、JBoss、WebLogic等)。 - 使用容器化技术(Docker)封装应用,实现更高效、可移植的部署。 2. 数据库管理: - 在云服务器上安装和...
首先,`Weblogic服务器性能调优.doc`这份文档可能包含WebLogic服务器在生产环境中如何进行性能优化的关键信息。性能调优通常包括JVM参数调整、内存配置、线程池设置、数据源管理、集群配置等多个方面。通过合理的...
- 在WebLogic环境下,虚拟机(如JVM)为应用提供了执行环境,处理内存管理、线程调度、垃圾回收等任务,是运行WebLogic服务器和部署应用的基础。 #### JNDI(Java Naming and Directory Interface) - **JNDI**是...
6. 运行与维护:监控应用性能,及时处理运行时问题。 **4. J2EE学习路径** - 先学习Java基础,包括语法、面向对象编程和异常处理。 - 掌握Servlet和JSP,理解MVC(Model-View-Controller)模式。 - 学习EJB,理解...
8. **容器管理和服务**:J2EE容器(如Tomcat、WebLogic、GlassFish)提供了诸如安全性、部署、性能监控等服务。笔记会探讨如何配置和管理这些服务。 9. **实战项目经验**:除了理论知识,笔记可能还包含了一些实际...
5. **容器和服务器提供商**:如WebLogic、WebSphere,提供运行EJB的平台。 6. **工具供应商**:提供开发工具,如JBuilder、WSAD、JUnit、Ant等。 **EJB组件构成** - **Enterprise Bean**:所有EJB类必须实现`javax....
- J2EE应用服务器(如Tomcat、WebLogic、WebSphere)提供容器,管理应用的生命周期,包括初始化、运行、监控和停止。开发者无需关心底层细节,只需关注业务逻辑。 通过深入学习这些知识点,开发者可以有效地构建...
11. **性能优化和测试**:涉及J2EE应用的性能监控、调优策略,以及单元测试和集成测试的工具和方法。 12. **安全性**:如SSL/TLS、JAAS(Java Authentication and Authorization Service)和角色基于的安全控制。 ...
5. **部署与运行**:将应用打包成WAR或EAR文件,部署到应用服务器如Tomcat、WebLogic、JBoss等。 6. **运维与监控**:监控系统状态,进行故障排查和性能优化。 【达内J2EE课程特点】 1. **理论与实践结合**:达内...
1. **Tomcat简介**:Tomcat是一个开源的Web服务器和应用服务器,实现了Java Servlet和JavaServer Pages(JSP)规范。它支持HTTP协议,可以处理HTTP请求并返回响应。由于Tomcat只专注于Servlet和JSP的实现,因此相比...
3.6 **运维**:监控应用性能,进行故障排查和优化。 **4. 进阶主题** 4.1 **Web服务**:J2EE支持SOAP和RESTful Web服务,用于实现跨平台、跨语言的通信。 4.2 **安全机制**:J2EE提供用户认证、授权和加密等功能...
- **性能调优与监控**:JVM参数调整、线程池优化、健康检查脚本编写。 #### 五、VMware虚拟化与高可用技术 **知识点:** - **vSphere架构了解**:ESXi主机管理、vCenter Server部署、vSphere Web Client使用。 - *...