apm java_非Java专家的APM:什么泄漏?

apm java

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用!

内存,内存,内存...

内存是Java的关键部分,尤其是内存管理。 作为开发人员,内存管理不是您想要定期执行的操作,也不是您想要手动执行的操作。 Java的一大优点是它能够为您处理内存模型。 当不使用对象时,Java会通过清理来帮助您。

但这也是问题开始的地方。 使用Java,也许您的应用程序不再使用对象,但是如果您不告诉虚拟机您不再使用它,则它不会清除它。 这是内存泄漏 。 我们都看过他们。 对象开始在您的堆中建立,您的应用程序停止运行。

内存泄漏通常是由于不正确的编程而导致的-通常是在开发人员未解除对对象的所有引用的情况下。 如您所知,Java中的类似对象被放到集合或映射中,因此如果您不从集合中删除特定的数据集,问题就会变得更加复杂。 收集的东西越多,您损失的空间就越大。

当Java为您管理内存模型,或者创建/销毁未使用的对象时,它将它们放入堆中。 该堆始终具有一定的大小,并具有最大可用空间。 如果内存管理不善,堆的空间将用完。 集合加起来,然后JVM崩溃。

诊断泄漏

传统上,有两种主要的内存泄漏诊断方法:堆转储和分析器。

自卸车5-150x150 第一个是堆转储,基本上可以让您查看哪个对象持有对集合的引用。 它可以使您很好地了解是什么对象导致了问题,但并没有告诉您谁在访问集合,而谁没有在访问。 它告诉您集合在哪里,但不会告诉您使用它的人的特征。 堆转储通常也非常大,以千兆字节为单位,而大型堆转储则很繁琐。 分析和打开堆转储,然后阅读并确定问题,需要大量资源。

第二种方法是堆转储和探查器的组合,可以使您更接近一点,但不多。 内存探查器会尝试帮助您分析堆转储。 他们拥有实时数据,现在您知道是谁在创建对象,但是您仍然没有真正导致泄漏的原因。

假设我有一个雇员对象。 员工对象被放入集合中,探查器将告诉您创建它的人。 探查器没有告诉您的是谁将其放入集合中以及谁将其从集合中删除。 探查器告诉您对象的诞生,而不是泄漏的原因。 无论如何,这可以帮助您缩小范围,但是您需要应用程序的扎实知识才能使探查器真正地帮助您确定原因,然后仍然需要大量时间和资源来查找泄漏。

我们从很多人那里听到了。 许多公司尝试使用这些工具,但是每隔几天他们的应用就会崩溃。 那他们怎么办? 他们重新启动JVM或CLR。 他们的应用再次崩溃,然后重新启动。 应用程序管理是一场噩梦,因为他们无法找到或修复其内存泄漏。

堆转储和事件探查器都可以在开发和预生产中提供帮助,但是一旦您的应用无所适从,事件探查器就无法使用。 探查器会带来大量开销,堆转储几乎会停止生产中应用程序的所有处理。 基本上,您需要使该JVM / CLR上的应用程序脱机才能完成所有工作。

随着当今应用程序的发展,这些繁琐的过程变得越来越难维护。 随着应用程序变得越来越复杂,堆越来越大,最终,这些方法并没有减少它。

AppDynamics和内存泄漏

迄今为止,我们的方法是提供全面的事务快照,尤其是明显的代码问题,可以使您深入了解问题的根源。 为了有效地隔离和解决内存泄漏,事务和代码路径分析至关重要。

这带给我们AppDynamics的一些有趣的发展。 我们为公司提供了一种直接识别内存泄漏根本原因的方法。 您可以自动检测泄漏,确定是谁在创建泄漏,以及导致该泄漏的代码路径或业务交易。 您可以在此处了解更多信息。

这有好处吗? 减少停机时间并降低MTTR。 我们很兴奋。 希望你也是。

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用!

翻译自: https://www.javacodegeeks.com/2016/10/apm-non-java-guru-leak.html

apm java

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

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

相关文章

360安全卫士电脑版_教你降服“流氓头子”正确打开360安全卫士的姿势,还你电脑流畅体验...

最近老哥家的电脑经常出问题原因是熊孩子玩儿完电脑,最后总是一堆莫名其妙的流氓软件占据桌面的半壁江山然后恢复电脑流畅运行的任务,就交到我这个“懂电脑”的人手里。如此反复两次,脾气再好的人,也想拉着熊孩子打一顿。但是活儿…

Linux命令终端如何查询本机的内外网IP地址

文章目录查询本机外网 IP 地址查询本机内网 IP 地址查询本机外网 IP 地址 [roothtlwk0001host ~]# curl ifconfig.me # 太慢了,不行[roothtlwk0001host ~]# curl icanhazip.com 47.114.59.104[roothtlwk0001host ~]# curl ident.me # 太慢了,不行[rooth…

信封问题_装饰信封

信封问题有时 很多时候,我需要一个类实现通过使其他类的实例的接口。 听起来很奇怪? 让我给你看一个例子。 在Takes框架中有许多此类,它们的名称都都类似于*Wrap 。 不幸的是,这是一个方便的设计概念,在Java中看起来很…

java netty swap高_Netty 超时机制及心跳程序实现

本文介绍了 Netty 超时机制的原理,以及如何在连接闲置时发送一个心跳来维持连接。Netty 超时机制的介绍Netty 的超时类型 IdleState 主要分为:ALL_IDLE : 一段时间内没有数据接收或者发送READER_IDLE : 一段时间内没有数据接收WRITER_IDLE &a…

MySQL查询条件中的各种运算符/操作符说明

文章目录一、比较运算符&#xff08;一&#xff09;正则表达式&#xff08;二&#xff09;模糊匹配 LIKE&#xff08;三&#xff09;转义字符二、单行比较运算符&#xff08;一&#xff09;安全等号 <>1. 和 的相同点2. 和 的不同点&#xff08;二&#xff09;区间运算…

etf基金代码大全_银行ETF最新规模首超28亿元再创历史新高,近4个月资金净流入超12亿元...

2019年即将收官&#xff0c;A股大盘在12月份总体有了明显的回暖&#xff0c;拥有低估值优势的银行板块随之明显反弹。受此利好行情催化&#xff0c;资金持续涌入银行ETF&#xff0c;其基金份额、基金规模双双连创历史新高。据上交所12月26日公布的最新数据&#xff0c;银行ETF&…

java sendmessage函数_vc中SendMessage自定义消息函数用法实例

本文实例讲述了vc中SendMessage自定义消息函数用法&#xff0c;分享给大家供大家参考。具体如下&#xff1a;SendMessage的基本结构如下&#xff1a;SendMessage(HWND hWnd, //消息传递的目标窗口或线程的句柄。UINT Msg, //消息类别(这里可以是一些系统消息&#xff0c;也可以…

你为什么要关心equals和hashcode

等于和哈希码是每个Java对象的基本元素。 它们的正确性和性能对于您的应用程序至关重要。 但是&#xff0c;我们经常看到甚至有经验的程序员都忽略了类开发的这一部分。 在本文中&#xff0c;我将介绍一些与这两种非常基本的方法有关的常见错误和问题。 合同 提到的方法至关重…

java判断时间是否在时间段内_具有C语言基础,利用半年时间学习Java是否够用

首先&#xff0c;对于具有一定C语言基础的同学来说&#xff0c;利用半年的时间来学习Java会有一个比较系统的学习过程&#xff0c;通常也能够达到实习程序员&#xff0c;或者是助理程序员的水平&#xff0c;然后在技术团队中实践一段时间之后&#xff0c;从事专业开发岗位应该是…

Liao Wenxiong‘s thoughts

点击看看在想什么鬼

python3字符串截取_从python3中的字符串中获取特定文本

只是使用str.split()和赋值给变量,还有一个默认的第二个参数可以帮助您处理唯一的total/free avail场景def get_free_memory(ssh_obj, rawTrue):stdin, stdout, stderr ssh_obj.exec_command(free -h)mem_stats stdout.readlines()[1]if raw:mem_stats_formatted " &qu…

kafka connect_Kafka Connect在MapR上

kafka connect在本周的白板演练中&#xff0c;MapR的高级产品营销经理Ankur Desai描述了Apache Kafka Connect和REST API如何简化和提高在处理来自包括旧数据库或数据仓库在内的各种数据源的流数据时的敏捷性。 他还解释了当您使用MapR Streams与Kafka进行数据传输时&#xff0…

二维动画作品_「咻动画」二维动画制作中角色造型的设计要点

关于二维动画可能就算不是动画行业的小伙伴们都多多少少都有所了解&#xff0c;近年来其在宣传片制作上面越来越受用。不少企业抛开传统保守的宣传片表现形式转而尝试动画制作宣传片&#xff0c;我们都知道在动画制作从脚本策划到输出成片这个过程中是一个很复杂的制作流程&…

MySQL函数/数据库函数

文章目录一、单行函数&#xff08;一&#xff09;数学函数1. round(x)&#xff0c;返回离 x 最近的整数&#xff0c;即对 x 进行四舍五入2. round(x,y)&#xff0c;返回数值 x 保留到小数点后 y 位的值3. truncate(x,y)&#xff0c;返回数值 x 保留到小数点后 y 位的值4. abs(x…

java请求并行方案_让 Yar Java Client 支持执行并行请求,ExecutorService 的使用

官方 php 客户端文档如下Yar_Concurrent_Client {/* 属性 */static $_callstack ;static $_callback ;static $_error_callback ;/* 方法 */public static int call ( string $uri , string $method , array $parameters [, callable $callback ] )public static boolean loop …

javaone_JavaOne 2016后续活动

javaone我很高兴今年参加了JavaOne&#xff0c;我可以用一个词概括一下这一经验&#xff1a;辉煌。 对我来说&#xff0c;今年与往年相比有很大不同&#xff0c;因为我在周日有一个演讲要共同主持&#xff0c;而我剩下的一周时间都可以参加会议。 因此&#xff0c;我了解到在Ja…

c# redis 如何设置过期时间_Redis 过期时间与内存管理

http://www.redis.cn/commands/expire.htmlhttp://www.redis.cn/topics/lru-cache.html内存管理 当 Redis 作为缓存使用时&#xff08;此时缓存仅作为热点数据提高服务的访问性能&#xff09;&#xff0c;需要考虑内存的限制&#xff0c;以及如何随着业务的增长&#xff0c;仅保…

Oracle 数据库的子查询(关联子查询)

文章目录一、子查询结果返回一个值&#xff08;单列单行&#xff09;二、子查询结果返回多行&#xff08;单列多行&#xff09;三、子查询结果返回多列多行四、关联子查询&#xff08;一&#xff09;子查询执行顺序&#xff08;二&#xff09;exists 关键字五、子查询总结六、关…

大端字节序码流中取出2字节_产生字节码

大端字节序码流中取出2字节在这篇文章中&#xff0c;我们将看到如何为我们的语言生成字节码。 到目前为止&#xff0c;我们已经看到了如何构建一种语言来表达我们想要的东西&#xff0c;如何验证该语言&#xff0c;如何为该语言构建编辑器&#xff0c;但实际上我们还不能运行代…

python编写程序时必须遵守的规则被称为_Python程序设计方案习题与答案

《 Python 程序设计》习题与参考答案 第 1 章 基础知识 简单说明如何选择正确的 Python 版本。 答&#xff1a; 在选择 Python 的时候&#xff0c;一定要先考虑清楚自己学习 Python 的目的是什么&#xff0c;打算做哪 方面的开发&#xff0c;有哪些扩展库可用&#xff0c;这些扩…