对象池回收对象

总览

在上一篇文章中,我说过对象反序列化更快的原因是由于使用了回收对象。 由于两个原因,这可能令人惊讶:1)相信如今创建对象是如此之快,无关紧要或与回收自己一样快,2)默认情况下,任何序列化库都不使用回收。

本文探讨了有无回收对象的反序列化。 创建对象不仅较慢,而且还会通过将数据从CPU缓存中推出来减慢程序的其余部分。

虽然这涉及反序列化,但解析文本或读取二进制文件也是如此,因为所执行的操作是相同的。

考试

在此测试中,我对1000个Price对象进行反序列化,而且还对复制一块数据花费了多长时间。 该副本表示反序列化后应用程序可能必须执行的工作。

测试定时进行一百万次,并对结果进行排序。 X轴显示百分比计时。 例如,90%的值是90%的最差值(或10%的值更高)。

如您所见,反序列化必须在创建对象时花费更长的时间,但是有时会花费很多时间。 这也许并不令人惊讶,因为创建对象意味着要做更多的工作,并且可能被GC延迟。 但是,令人惊讶的是复制数据块的时间增加了。 这表明不仅反序列化速度变慢,而且需要数据缓存的任何工作也因此变慢。 (这几乎是您在实际应用程序中可能会执行的任何操作)
性能测试很少向您显示对应用程序其余部分的影响。

更详细

检查较高的百分位数(最长的时间),您可以看到,如果反序列化必须等待GC,则性能始终很差。

在最坏的情况下,副本的性能也会大大提高。

代码

回收示例代码

参考: Vanilla Java博客上的JCG合作伙伴 Peter Lawrey 回收对象以提高性能 。

相关文章 :
  • Java Secret:加载和卸载静态字段
  • C ++或Java,高频交易哪个更快?
  • 如何在Java中获得类似于C的性能
  • Java中的低GC:使用原语而不是包装器
  • Java教程和Android教程列表

翻译自: https://www.javacodegeeks.com/2011/11/recycling-objects-to-improve.html

对象池回收对象

对象池回收对象_回收对象以提高性能相关推荐

  1. java对象工厂池_[转载]Java对象池技术的原理及其实现

    作者:汪永好 出处:计算机与信息技术 责任编辑: 方舟 [ 2006-11-25 07:00 ] 摘 要 :本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式.还指出了使用对象池技术 ...

  2. Golang sync.pool对象池

    概览 Goalng中通过sync.pool提供了对象池的实现来达到对象复用的目的.在netty中,也通过Recycle类实现了类似的对象池实现.在netty的对象池Recycle中,当A线程需要将B线 ...

  3. U3D客户端框架之类对象池技术优化C#语言GC

    一.类对象池概念 1.类对象池介绍 类对象池,类似对象池,顾名思义就是一定数量的已经创建好的类对象(Object)的集合.当需要创建对象时,先在池子中获取,如果池子中没有符合条件的对象,再进行创建新对 ...

  4. [卡卡西0旗木] [代码设计]对象池设计与打飞机演示

    不好意思,最近实在忙的慌.好久没发文章了.不管怎样,先发个图压压惊.<br/>       是的.这就是大名鼎鼎的打飞机.看到那小飞机没有,是我用Cube拼出来的-_-.不过那不是重点.我 ...

  5. 面试官问:对象池技术了解吗?apache common pool2呢?

    欢迎关注方志朋的博客,回复"666"获面试宝典 对象池顾名思义就是存放对象的池,与我们常听到的线程池.数据库连接池.http连接池等一样,都是典型的池化设计思想. 对象池的优点就是 ...

  6. Android 对象池案例

    前言: 对象池是对一些常用对象的回收再利用,这样就可以避免创建大量对象,避免对象创建后被GC 回收,然后再次创建,可以解决一些类似于内存抖动的问题. 在Android 里面大量使用了这种思想,总结一些 ...

  7. WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance

    我们知道WCF有3种典型的对service instance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Sin ...

  8. 对象池commons-pool

    http://blog.sina.com.cn/s/blog_4b38e200010008s9.html 对象池化技术 Jakarta Commons Pool组件 下载和安装 PoolableObj ...

  9. java 对象池 博客_Java对象池技术的原理及其实现的小结

    一起学习 Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 T2 T3.其中T1表示对象的创建时间,T2表示对象的 ...

  10. Java小对象的解决之道——对象池(Object Pool)的设计与应用

    一.概述 面向对象编程是软件开发中的一项利器,现已经成为大多数编程人员的编程思路.很多高级计算机语言也对这种编程模式提供了很好的支持,例如C++.Object Pascal.Java等.曾经有大量的软 ...

最新文章

  1. 超好用的自信学习:1行代码查找标签错误,3行代码学习噪声标签
  2. Some thoughts on my own O/R Mapping or Code Generation tools
  3. 如何在开盘15分钟内发现当天黑马
  4. 有道云笔记里几种我觉得比较有用的操作
  5. sap.ui.core.ComponentContainer
  6. 员工的不幸?还是公司的悲哀?
  7. 今日恐慌与贪婪指数为75 贪婪程度有所缓解
  8. 华三ospf联动bfd_OSPF、BGP、ISIS的路由收敛时间、缩减路由收敛时间的措施有哪些...
  9. 再也不学AJAX了!(三)跨域获取资源 ② - JSONP CORS
  10. 2019年软件评测师考试大纲
  11. SQL Server 2008 示例库 AdventureWorks2008R2
  12. 主板检测卡c5_用诊断卡 搞定主板故障
  13. 摄氏温度和华氏温度相互转换(及其概念)
  14. HTTP 405 Method Not Allowed问题的解决
  15. Prometheus + Grafana + alertmanager实现Substrate区块链节点实时监控报警系统(上)
  16. python3 列表长度_3种在Python中查找列表长度的简便方法
  17. 10月11日 驱动开发
  18. java304_HTTP 304状态码
  19. 北大计算机考研801课程,2021北京大学计算机考研辅导
  20. ISO15189医学实验室认可内审员培训

热门文章

  1. python常见内置函数
  2. List实现类中调用下标删除VS调用元素删除
  3. 2018蓝桥杯省赛---java---A---10(付账问题)
  4. 计算机在轻化工程中的应用,计算机在轻化工程专业中的应用-中国大学mooc-题库零氪...
  5. 离线配置xml的文档类型定义文件(xml语法规则) dtd
  6. java平台脚本+java编译器API
  7. Post请求如何取消异步
  8. 积分和人民币比率_通过比率路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul...
  9. web.xml.jsf_看一下即将发布的JSF 2.3 Push支持
  10. swing 状态视图分离_Java Swing模型视图适配器介体