在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java专业知识,广州疯狂java培训为你讲解;

  性能问题的最明显表现是网页的响应时间变慢。在J2EE系统中,经常体现有下面更为基本的症状:

  应用服务器资源的使用情况

  JVM堆的使用情况

  系统资源的使用情况

  数据库资源的使用情况

  网络活动

  这些现象表明J2EE应用依赖很多外部资源,并且是运行在一个层次化的执行模式的环境中:

  由于Java虚拟机和应用服务器掩盖了操作系统和硬件的特性,所以在设计软件系统时,架构工程师更应该深刻理解整个操作环境。

  在设计软件系统时,架构工程师应把性能和可扩展性放在首位,然后开始寻找容易解决的问题,反应时间缓慢通常的原因是访问数据库效率低和过多地调用远程对象和方法。接下来,架构工程师可继续寻找不明显的原因,例如算法的累积影响和不必要的开销。

  现在市场上的各个J2EE应用服务器有很多配置项目。这里只简单介绍一些常见的性能优化配置项目。很多应用服务器都有一些与J2EE规范有关的操作系统配置项目或非标准的特性,这可以提高系统性能。应该化时间来理解这些性能配置。

  Java虚拟机堆和垃圾回收设置

  任何Java应用的性能调整基础都涉及到堆的大小和垃圾回收设置。(这里主要讨论Sun HotSpor JVM).堆可分为三代,年轻的(新的),年老的和持久的。Hotspot JVM的内存基本配置包括最大堆大小,初始堆大小和年轻一代堆的大小。当配置最大堆大小时可参考下面一些指导:

  最大大小应小于物理内存,避免虚存的页面调度。

  需要减去其他进程使用的内存

  在负载测试时进行优化

  注意不要将最大堆大小设置得过大。堆越大,内存中保存的对象越多。内存中对象越多,回收过程时间越长。

  配置初试堆大小的一般性策略包括:

  将初始大小设置为最大堆大小,将初始大小设置为最大堆大小的1/4到1/2

  对于年轻一代堆大小,Sun 推荐是设置为最大堆大小的1/3。

  也可以选择不同的垃圾回收算法。首先是增量垃圾回收。该算法的意思是减少单个对象回收停顿时间,这样的结果是整体回收性能的下降。该算法将相互引用的对象分组,然后尝试按组回收。尝试回收的部分越小,回收处理的时间往往会越少。

  1.4.1版的HotSpot JVM增加了两个垃圾回收算法:并行算法和并发算法。

  在年轻一代堆中实现了并行算法。在多处理器的机器上,这种回收算法使用了多线程来提高性能。虽然这个算法会暂停所有的应用线程,但是由于利用了多个CPU使得回收时间非常快。在年轻一代堆中,该算法显著地减少了回收带来的停顿。

  在年老一代堆中实现了并发算法。在应用中最大限度地执行并发。回收过程分为4个阶段,覆盖了可回收对象的标记和清除操作。前两个过程会暂停应用线程,后两阶段可与应用并发执行。并发垃圾回收算法的"最大限度并发"特点可以使JVM利用更大的堆和多个CPU。因此应关注由于采用缺省的mark-compact(标记-压缩)和stop-the-world(停顿所有处理)等垃圾回收算法所带来的延迟和吞吐量问题。

  推荐:构建高性能J2EE应用的五种核心策略

  处理线程

  J2EE应用服务器是多线程的应用。应用服务器的线程是一种资源池,处理请求和和应用服务器的内部功能等任务共享这些资源。

  很多应用服务器允许为特定的任务或应用配置不同大小的线程池。通常需要增加这些线程池的大小以满足应用负载的需要。

  架构工程师应该避免将线程池大小设置过大,这是因为会增加上下文交换的次数,从而降低应用的性能。

  线程池的大小通常应该能最大利用机器上的CPU,同时又不能使CPU过载。

  EJB配置项目

  在应用服务器中,很多不同类型的EJB是以资源池的方式实现的。通常这些池大小和初始Bean的数量会明显影响应用的性能。

  架构工程师应该避免将这些池大小设置的过大,这样会导致不必要地消耗JVM和操作系统内存。另外,将初始Bean数量设置过高会使得应用服务器的启动时间长的难以接受。

  在应用服务器中,缓存很多不同类型的EJB。缓存大小和超时设置通常也会对应用性能带来显著影响。

  架构工程师应该避免将缓寸大小设置过大,这同样会不必要地消耗大量JVM和操作系统内存。此外,应避免设置过长的超时--例如当EJB不用时,仍被缓存---,这也会导致不必要地消耗大量内存。

  数据库配置项目

  J2EE规范要求应用服务器厂商必须提供数据库连接资源池功能。通常增加数据库连接池的大小会提高性能。架构工程师应该考虑不同类型的SQL操作(例如事务型和批处理型)应使用不同的连接池。如果一个消息Bean执行批处理操作,那么应该为此另创建一个连接池,而不要与事务型操作使用同一个连接池。

  很多J2EE应用服务器提供了Prepared Statement 的缓存功能。创建Prepared Statement是很耗费资源的。在事务型的J2EE应用中通常执行很多同样的SQL语句,只是参数不同而已。所以在应用中应发挥数据库配置项目的作用,尽量使用Prepared Statement。

  疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。没有工作经验的学员,在疯狂java,通过大量全真经典企业级项目进行集中培训,课上讲师讲解和课下项目练习课上课下双管齐下,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,激情,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

转载于:https://www.cnblogs.com/gojava/p/3234451.html

解决J2EE系统应用性能问题常用方法相关推荐

  1. 解决秒杀系统超卖问题的三种方案

    在秒杀系统设计中,超卖是一个经典.常见的问题,任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难点. 一.问题描述 在多个用户同时发起对同一个商 ...

  2. 系统架构性能问题诊断及优化思路,纯干货!

    来源:http://blog.sina.com.cn/s/blog_493a84550102z8t2.html 今天谈下业务系统性能问题分析诊断和性能优化方面的内容.这篇文章重点还是谈已经上线的业务系 ...

  3. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...

  4. 初学者如何开发出一个高质量的J2EE系统

    J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向. 首先我们需要知道Java和J2EE是两个不 ...

  5. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...

    本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...

  6. 初学者如何开发出高质量J2EE系统

    J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习 J2EE学习方向. 首先我们需要知道Java和J2EE是两个 ...

  7. Apache Kafka / Spark流系统的性能调优

    电信行业的实际案例研究 调试实际的分布式应用程序可能是一项艰巨的任务. 至少在一开始,最常见的Google搜索并没有什么用. 在这篇博客文章中,我将详细介绍如何将Apache Kafka / Spar ...

  8. 系统架构性能优化思路

    -     前言    - 今天谈下业务系统性能问题分析诊断和性能优化方面的内容.这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点. 系统性能问题分析流程 我们首先来分析下如 ...

  9. win7为什么打开桌面上的计算机很卡很慢,如何解决win7系统电脑反应慢

    有时候win7确实会出现运行反应慢些,那么如何解决win7系统电脑反应慢呢?今天学习啦小编与大家分享下解决win7系统电脑反应慢的具体操作步骤,有需要的朋友不妨了解下. 解决win7系统电脑反应慢方法 ...

最新文章

  1. Android初学第29天
  2. Operation category READ is not supported in state standby
  3. datetime的文本时间处理
  4. Python+OpenGL绘制任意形状的三次贝塞尔曲线
  5. 强一致、高可用、自动容灾能力背后,阿里X-Paxos的应用实践
  6. 20220323:双边沿触发器趣解
  7. spring service加上@autowired 空指针_Spring整合activeMQ和JsonP
  8. mysql 单例模式_php基于单例模式封装mysql类完整实例
  9. Shiro 基础教程
  10. rabbitMQ windows 下安装
  11. HTML5+CSS3 Pink老师课后作业——小米logo过渡切换的实现
  12. WEB UI设计规范
  13. AttributeError:partially initialized module ''has no attribute''(most likely dueto a circular import
  14. android 拍照添加背景颜色,怎么改变证件照的底色
  15. 个人支付免费开通支付宝付款功能(免费签约)支付宝当面付开通集成到网站教程
  16. JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)
  17. c语言正弦函数求导,正弦函数求导公式基本推导
  18. 解决连接远程服务器MySQL“ACCESS DENIED FOR USER‘ROOT‘@‘IP地址‘“问题
  19. qq钱包php开发文档,QQ轻应用
  20. thinkphp5学习路程 三 数据库操作

热门文章

  1. Simulink仿真 第七节 关系运算符及逻辑运算符模块
  2. Python进阶11-标准库介绍02
  3. 【跟网上的大多数不一样】rstudio plot不显示图片了
  4. matlab条件判断配合输出
  5. 两个栈实现一个队列,两个队列实现一个栈
  6. Ubuntu cocos2d-x 3.13版本游戏开发学习系列3 Cocos2d-x的坐标系
  7. spring security 允许 iframe 嵌套
  8. jquery实现页面加载时删除特定class 的div内前三个字符
  9. JavaScript eval()
  10. 解决Putty中左边 alt+b 不工作的问题