谁在偷你的记忆? 应用服务器版

您创建了一个了不起的应用程序。 您将其投入生产。 您会发现您没有足够的可用内存。 即使您的所有测量结果(可能是借助我们的小型公用事业公司进行的测量 )都表明您应该还不错。

我们计划发布一系列博客文章,研究堆消失的位置,并从基础结构版本开始。 Stealing memory 今天的假设–我的应用程序服务器可能会成为消耗我所有宝贵内存的贪婪的混蛋吗?要找出答案,我们在五台应用程序服务器上进行了少量测试。

女士们,先生们,让我们介绍一下参赛者:

  • Oracle Weblogic 12.1.1
  • 玻璃鱼 3.1.1.2
  • RedHat JBoss AS 7.1.1
  • Apache Tomcat 7.0.30
  • 码头 8.1.7

您可能会说,我们这里将苹果与橙子进行比较–通过拥有完整的Java EE配置文件(例如Weblogic,Glassfish和JBoss),与Web容器(如Jetty或Tomcat)竞争。 但是–我们已经看不到看到仅运行servlet的IBM或Oracle部署的情况了,因此我们认为在同一页面上看到所有提到的通用容器将是一个启发。

在开始进行测量之前,我们想向Weblogic团队致以一些个人问候。 用于压缩没有根文件夹的归档文件。 跟踪地狱实际上是什么,我发现了一些乐趣。 其次,向JBoss致敬。 我花了10分钟浏览他们的网站来了解要下载什么。 非常感谢IBM 。 他们的WebSphere不能安装在Mac上。

但是我们并不打算让这个职位成为出色的续集,“ 一切都打破了,没有人难过” 。 因此,让我们继续比赛吧。 到现在为止,我们所有的容器都已下载并准备参与。 我们进行的测试包括每1000毫秒后启动所有容器并收集数据。 我们非常喜欢这种竞赛的科学方法,而且我们也很懒。 这种结合导致我们使用了内部构建的另一个小实用程序 ,并将所有无聊的工作委托给了stats文件。 使用与JVM本身捆绑在一起的JMX API收集了数据。 收集的数据包含可用于JVM的总内存和未分配的内存大小。

所有容器均以“现成的配置”启动,除了将统计实用程序添加到服务器启动脚本之外,我们没有进行任何其他更改。 唯一的例外是Weblogic,其PermGen空间已调整为绝对精度–当我们附加由两个java类组成的代理时,最后出现一条错误消息,提示您增加PermGen的大小。

在整个测试中,我们没有在服务器上部署任何东西,也没有以任何方式使用服务器,包括捆绑的管理员实用程序。 在我们使用kill -9 <pid>杀死所有服务器之前,所有服务器都有90分钟的运行时间。

用于执行测试的机器是运行OS X Mountain Lion的2010年老式64位Macbook Pro。 测试中使用的JVM是Oracle HotSpot 1.6.0_35。

但是足够的背景。 结果不言自明:

Memory overhead

从图中可以看出,Tomcat是明显的赢家,它仅消耗了15.63MB的内存 。 Weblogic要求在图表的另一端增加两倍以上的容量,仅为其自身分配33.73MB

老实说,我们最惊讶地发现Jetty仅位于第三名。 在测试之前,我们团队内部进行的首轮下注显然使Jetty具有最小的内存占用。 但是,没有,它只有19.66MB ,在Glassfish和JBoss之间仅排名第三,分别消耗了23.26MB18.89MB

总而言之,即使是我们竞争中的明显失败者,也很可能不应对您的应用程序的内存问题负责。 当然,除非您使用的内存非常有限。

我们计划通过排列流行的框架来继续该系列,以查看在开始在典型的Java EE应用程序中编写一行代码之前会损失多少内存。 您想在比赛中看到什么框架? 通过包含@JavaPlumbr的鸣叫让我们知道。

参考: 谁在窃取您的记忆? Plumbr博客博客上的JCG合作伙伴 Nikita Salnikov Tarnovski提出 的Application Servers Edition 。

翻译自: https://www.javacodegeeks.com/2012/12/who-is-stealing-your-memory-the-application-servers-edition.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

遗忘的html标签

1 <span>x</span><sup>2</sup><span> y10</span> 2 <br> 3 <span>H</span><sub>2</sub><span>O</span> <sup> 标签可定义上标文本。 包含在 <sup> 标签和其结束标签 …

mysql数据库索引页号为什么从3开始_MySQL数据库快问快答

原标题&#xff1a;MySQL数据库快问快答前言今天楼主给大家列一下关于数据库几个常见问题的要点&#xff0c;如果大家对其中的问题感兴趣&#xff0c;可以自行扩展研究。1. UNION ALL 与 UNION 的区别UNION和UNION ALL关键字都是将两个结果集合并为一个。UNION在进行表链接后会…

java arraylist排序_最全Java集合笔记

集合概述什么是集合集合框架&#xff1a;用于存储数据的容器。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容&#xff1a;对外的接口、接口的实现和对集合运算的算法。接口&#xff1a;表示集合的抽象数据类型。接口允许我们操作…

CachedIntrospectionResults 初始化

转载于:https://www.cnblogs.com/xiluhua/p/7862985.html

为什么有些内联(行内)元素可以设置宽高?

为什么有些内联&#xff08;行内&#xff09;元素如img、input可以设置宽高&#xff1f; 在说明之前我们先来了解一些定义。 块级元素和内联元素&#xff1a; ①块级元素总是独占一行&#xff0c;表现为另起一行开始&#xff0c;而且其后的元素也必须另起一行显示。 宽度(w…

在Eclipse中高效运行HTTP / REST集成测试

最近&#xff0c;我有机会使用由我亲爱的Holger Staudacher编写的OSGi-JAX-RS-Connector库。 通过连接器&#xff0c;您可以通过将Path注释的类型注册为OSGi服务来轻松发布资源-实际上&#xff0c;它工作得很好。 对于我来说&#xff0c;使用普通的JUnit测试编写驱动的服务类测…

Eclipse安装TestNG插件

Eclipse安装TestNG插件 TestNG是什么? TestNG按照其文档的定义是&#xff1a; TestNG是一个测试框架&#xff0c;其灵感来自JUnit和NUnit的&#xff0c;但引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更方便。 TestNG是一个开源自动化测试框架;TestNG表示下…

basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

Java基础-DBCP连接池(BasicDataSource类)详解作者&#xff1a;尹正杰版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程&#xff0c;为了解决此类性能问题&#xff0c;通常…

生物神经网络衍生出的算法

一个生物神经网络的基本结构&#xff1a; 生物神经网络由大量神经元组成&#xff0c;这些神经元之间通过突触相互连接。神经元可以接收来自其他神经元的信号&#xff0c;并根据信号的强度和类型来调整自己的输出信号。这种神经元之间的相互连接和信号传递形成了生物神经网络的基…

echart实例数据 本地加载_JVM 类加载概述

来源&#xff1a;SegmentFault 思否社区作者&#xff1a;又坏又迷人JVM简介JVM是Java Virtual Machine(Java虚拟机)的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Ja…

高可用集群搭建

高可用集群搭建  创建hadoop账户 创建hadoop账户&#xff08;#注意&#xff0c;接下来的操作均在hadoop账户下运行&#xff09; # useradd hadoop # passwd hadoopsu - hadoopmkdir soft disk1 disk2mkdir -p disk{1,2}/dfs/{dn,nn}mkdir -p disk{1,2}/nodemgr/local 将本地目…

scrt如何切换成英文版_英文版SecureCRT显示乱码解决

英文版SecureCRT显示乱码解决系统环境&#xff1a;CentOS&#xff15;.&#xff16;以前Linux都是默认安装在英文环境下&#xff0c;用英文版的SecureCRT查看系统内容输出的也都是英文的&#xff0c;不会出现乱码问题。今天同事在服务器安装时默认选择了简体中文&#xff0c;这…

java try catch_Java捕获异常

大家好&#xff0c;欢迎来到乐字节小乐的Java技术分享园地在Java中&#xff0c;凡是可能抛出异常的语句&#xff0c;都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中&#xff0c;然后使用catch捕获对应的Exception及其子类。多catch语句可以使用多个catch语…

多语言持久性:带有MongoDB和Derby的EclipseLink

从现在开始&#xff0c;多语种持久性一直是新闻。 从2011年底开始&#xff0c;在著名的Fowler帖子的推动下&#xff0c;我看到了更多更好的主意。 最新的一个是公司内部的学生项目&#xff0c;我们在其中使用Scala作为后端数据&#xff0c;将数据持久存储到MongoDB&#xff0c;…

web前端开发最佳实践--(笔记之JavaScript最佳实践)

如何避免全局变量污染&#xff1f; 避免定义全局变量或全局函数用一个变量进行封装&#xff0c;并返回外部需要访问的接口如何写出高维护的js代码 配置数据和代码逻辑分离 如&#xff1a; 改成&#xff1a; ---用js模板mustachehandlebarsjsMVC的数据模式 model&#xff1a;数据…

Python入门笔记

Python变量和数据类型 数据类型 print语句 注释 Python的注释以 # 开头&#xff0c;后面的文字直到行尾都算注释 # 这一行全部都是注释... print hello # 这也是注释 什么是变量 定义字符串 字符串可以用或者""括起来表示。 如果字符串本身包含怎么办&#xff1f;比如…

如何保证input的输入值不会随着提交 而变空_如何对web界面的应用进行测试?

一、输入框&#xff1a;1、字符型输入框&#xff1a;&#xff08;1&#xff09;字符型输入框&#xff1a;英文全角、英文半角、数字、空或者空格、特殊字符“~&#xff01;#&#xffe5;%……&*&#xff1f;[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时&…

CentOS6.x下,tomcat - web项目部署

1. 安装tomcat tomcat安装方法&#xff1a;http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 <!-- 使用 80 端口 (也可以使用其它端口)--> <Connector port"80" protocol"HTTP/1.1"connectionTimeout"200…

使用地图触发功能处理相干事件

本文介绍如何通过使用映射触发器来处理一致性事件。 基本上&#xff0c;建议使用Oracle Coherence中的分布式数据管理来研究Oracle Coherence API的基本配置和实现。 映射触发器是Oracle Coherence提供最高度定制的缓存管理系统的最重要功能之一。 MapTrigger代表一个功能代理…

阿里云服务器mysql莫名丢失_mysql数据库丢失

mysql数据库丢失云服务器(Elastic Compute Service&#xff0c;简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源一样便捷、高…