arp老化时间是什么

我最近偶然发现了术语“软件老化”。 我对此主题的最初想法不太积极,尤其是在阅读了Wikipedia定义之后 。 唯一的流行语是我脑海中唯一能引起共鸣的东西。 但是,在深入研究这个概念之后,我开始有所不同。 即使是我们自己的产品,本质上也可以为软件老化的结果提供保护。 因此,我认为一些概念值得与您分享。

但是,让我们先从维基百科关于该主题的观点开始:

软件老化是指由于操作系统资源耗尽,碎片和错误累积而导致的性能逐步下降或软件系统突然挂起/崩溃。

这个定义很无聊。 但是我想大家都记得刚启动的Windows运行良好的日子。 但是在短短几天内,它变得如此缓慢,以至于唯一的解决方案就是重启。 在一年左右的时间里,您需要全新安装,因为重新启动不再对您有帮助。

重新启动和重新安装Windows是一个很好的例子,我想大多数人都可以轻松地与之联系。 甚至甚至同意David Lodge Parnas关于这个问题的看法:

程序像人一样会变老。 我们无法防止老化,但是我们可以了解其原因,采取措施限制其影响,暂时消除其造成的某些损坏,并为该软件不再可用的日子做准备。 我们必须全神贯注于第一个版本,并专注于产品的长期健康。

在这句话中,先生。 Parnas还暗示,旧版应用程序更容易老化,但是无论您的代码库大小如何,您都可能遭受软件老化的不同原因,例如:

  • 内存泄漏(我们目前的面包和黄油)
  • 锁争用问题
  • 未发布的文件句柄
  • 内存/交换空间膨胀
  • 资料损坏
  • 存储空间碎片
  • 四舍五入错误累积

由于列表过于干燥,因此我将尝试通过引用Java领域的示例来增强其功能,以说明原因的相关性(或不相关性)。

内存泄漏 。 这是我们目前的面包和黄油 –每天我都面临着数十种不同情况,这些应用程序正遭受泄漏的困扰。 实际上,从我们目前的数千个应用程序数据集中,我们可以看到大约50%的应用程序确实包含一个应用程序。 以下示例说明了这种情况。

该程序一次读取一个数字并计算其平方值。 此实现使用原始的“缓存”来存储计算结果。 但是由于这些结果永远不会从高速缓存中读取,因此代码块表示内存泄漏。 如果我们让该程序运行并与用户互动足够长的时间,则“缓存”结果将占用大量内存。 它是老化的一个很好的样本–该程序可以在最终用户受到影响之前使用数天。

public class Calc {Map cache = new HashMap();public int square(int i) {int result = i * i;cache.put(i, result);return result;}public static void main(String[] args) throws Exception {Calc calc = new Calc();while (true)System.out.println("Enter a number between 1 and 100");int i = readUserInput(); //not shownSystem.out.println("Answer " + calc.square(i));}}
}

锁定争用 。 多年以来,您都必须一直处在应用程序运行良好的情况下,然后在负载稍有增加之后,您就开始面临这样的情况:线程开始在同步块后面等待,或者出现饥饿或完全锁定。

以下示例用作案例的教科书插图。 在您启动两个试图同时运行transfer(a,b)和transfer(b,a)并导致死锁的线程之前,代码将正常工作。 再说一次,在类似情况升级为锁定线程之前,您可能会愉快地运行代码数月或数年。

class Account {double balance;int id;void withdraw(double amount){balance -= amount;}void deposit(double amount){balance += amount;}void transfer(Account from, Account to, double amount){sync(from);sync(to);from.withdraw(amount);to.deposit(amount);release(to);release(from);}
}

未发布的文件句柄 。 再次重申,我确信您在查看与以下内容类似的东西时一直在咒骂,因为其他开发人员在加载后忘记关闭资源。 在java.io.IOException之前,该代码可能已经运行了好几个月了抛出太多打开文件消息,这再次证明了老化问题。

Properties p = new Properties();
try {p.load(new FileInputStream(“my.properties”));
} catch (Exception ex) {}
finally {//no, i will NOT close the stream}

内存/交换空间膨胀 。 现代操作系统倾向于快速调出一段时间未使用的内存。 因此,当物理内存不足并且操作系统开始交换堆时,您可能会遇到问题。 垃圾收集使事情变得越来越糟–完整GC需要JVM遍历对象图以标识每个可访问的对象以检测垃圾。 这样做时,它将触摸应用程序堆中的每个页面,从而触发页面从内存中换入和换出。

幸运的是,由于多种原因,现代JVM中的影响有所降低,例如:

  • 大多数对象永远都不会从年轻一代中逃脱,这些新生代几乎肯定会驻留在内存中
  • 从年轻一代移出的对象往往被频繁访问,这又倾向于将它们保留在常驻内存中。

因此,您可能已经逃脱了这一步,但是由于大量交换,我已经看到GC周期从几百毫秒延长到数十秒。 因此,我们又遇到了一个情况,由于内存膨胀,一段时间后缓存加载缓慢的行为完美的应用程序变成了可用性噩梦。

考虑以上示例–我想您可能同意我的观点,该软件确实确实像人类一样在老化。 我为我们介入救援感到非常高兴。 到目前为止,仅用于解决内存泄漏,但是我可以暗示,在我们的实验室中,我们正在酝酿许多有趣的事情。

参考: 为什么软件会老化? 由我们的JCG合作伙伴 Nikita Salnikov Tarnovski在Plumbr Blog博客上获得。

翻译自: https://www.javacodegeeks.com/2013/08/why-is-your-software-aging.html

arp老化时间是什么

arp老化时间是什么_为什么您的软件会老化?相关推荐

  1. 为什么linux的新得立软件下载,linux,debian_蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理?,linux,debian - phpStudy...

    蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理? (synaptic:9573): GLib-CRITICAL **: g_child_watch_add_full: ass ...

  2. 计算机英语在线学习,英语单词记忆法超强记忆_免费背单词软件电脑版

    英语单词记忆法超强记忆_免费背单词软件电脑版 下载地址: 内容预览 如何背英语单词personify.mp4 如何背英语单词dote.mp4 如何背英语单词coddle.mp4 如何背英语单词drow ...

  3. 计算机背小学英语吗,小学英语电脑版背单词软件哪个好_简单背单词软件

    小学英语电脑版背单词软件哪个好_简单背单词软件 内容预览 小学英语背单词软件bother.mp4 小学英语背单词软件boudoir.mp4 小学英语背单词软件confuse.mp4 小学英语背单词软件 ...

  4. 计算机基础应用软件ppt制作,大学计算机基础_演示文稿制作软件.ppt

    大学计算机基础_演示文稿制作软件资料 插入影片和声音 插入影片 插入声音 播放CD乐曲 录制声音 5.5 演示文稿中的动画和超链接技术 5.5.1 为幻灯片加入动画效果 5.5.2 创建超级链接 为幻 ...

  5. 7年级计算机组成ppt,《第二课_计算机的硬件软件了解计算机系统的组成课件》初中信息技术滇教科课标版七年级全一册课件.ppt...

    <第二课_计算机的硬件软件了解计算机系统的组成课件>初中信息技术滇教科课标版七年级全一册课件 下一页 上一页 封面 退出 计算机的组成 中学信息技术 导入 讲解 练习 小结 下一页 上一页 ...

  6. linux arp 老化时间,Linux实现的ARP缓存老化时间原理解析

    一.问题众所周知,ARP是一个链路层的地址解析协议,它以IP地址为键值,查询保有该IP地址主机的MAC地址.协议的详情就不详述了,你可以看RFC,也可以看教科书.这里写这么一篇文章,主要是为了做一点记 ...

  7. linux系统中arp老化时间计算,Linux实现的ARP缓存老化时间原理解析

    Linux实现的ARP缓存老化时间原理解析 2012-02-11 22:00 1566人阅读 评论(0) 收藏 举报 一.问题 众所周知,ARP是一个链路层的地址解析协议,它以IP地址为键值,查询保有 ...

  8. arp 华为 查看 路由器_华为路由器运行状态查看-路由器

    华为路由器运行状态查看 为了查看路由器的工作状态,和输入指令是否已经起作用,这时我们就需要用到DISPLAY命令,该命令可以让我们随时了解路由器的各种状态,以便排除故障. 华为路由器的display命 ...

  9. arp 华为 查看 路由器_华为路由器 配置arp

    华为路由器 配置arp Quidway Eudemon 100/100E/200/200S 配置指南 网际互联分册 目 录文档版本 04 2008-01-25 华为技术有限公司 i目目 录录 9 配置 ...

最新文章

  1. 全球与中国塑料废料粉碎机市场运营状况分析及投资风险评估报告2022-2027年版
  2. PHP单引号和双引号的区别
  3. mysql5.7.24免安装版配置_mysql5.7.20免安装版配置方法图文教程
  4. springboot3——Email
  5. 1.5 基础数据类型 -- 字典与集合
  6. python可以调用windows资源吗_在Windows中使用Python设置文件夹权限
  7. [译] JavaScript 的函数式编程是一种反模式
  8. 5.19 学习日记 活干得差不多了
  9. STM32F103RBT6移植到STM32F103C8T6注意事项
  10. 六大免费网站数据采集器对比(火车头,海纳,云采集,ET,三人行,狂人采集)
  11. 最全的Java多线程面试题
  12. C/C++获取CPU等硬件信息屏幕截图
  13. SPSS实现距离分析
  14. 十款代码表白特效,一个比一个浪漫
  15. U盘图标自定义时不能修改图标?
  16. 我的天空计算机音乐,我的天空(Acoustic Version)
  17. Hydra 6.4.xx,Hydra程序框架
  18. 基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析
  19. 如何有效防止系统邮件被视为垃圾邮件
  20. Linux找回mysql的root密码

热门文章

  1. 重庆大学计算机系保研,硬核!重庆7个学霸全部保送清华北大,还来自同一所学校!...
  2. shodan基础用法
  3. linux i3 桌面,在Linux系统使用i3平铺窗口管理器的五大优势
  4. C++易错点之equal
  5. 分离单词,瓦尔登英语单词出现频率
  6. AI 人工智能之常见概率分布(1)
  7. 马云给阿里巴巴员工的公开信
  8. 牛客白月赛19【题解】
  9. jetty9配置contextPath
  10. UE5引擎编辑器插件开发归档