`
mouer
  • 浏览: 97728 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对象池化技术(1)--为什么要使用

    博客分类:
  • J2SE
阅读更多

网上的转帖很多,其中我任务较为确切的说明是:

http://www.ibm.com/developerworks/cn/java/l-common-pool/index.html

作者在文中写道:

恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率。

<!-- START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --> <!-- END RESERVED FOR FUTURE USE INCLUDE FILES-->

创建新的对象并初始化的操作,可能会消耗很多的时间。在这种对象的初始化工作包含了一些费时的操作(例如,从一台位于20,000千米以外

的主机上读出一些数据)的时候,尤其是这样。在需要大量生成这样的对象的时候,就可能会对性能造成一些不可忽略的影响。要缓解这个问题,

除了选用更好的硬件和更棒的虚拟机以外,适当地采用一些能够减少对象创建次数的编码技巧,也是一种有效的对策。对象池化技术(Object Pooling)就是这方面的著名技巧,而Jakarta Commons Pool组件则是处理对象池化的得力外援。

对象池化技术:


对象池化的基本思路是:将用过的对象保存起来,等下一次需要这种对象的时候,再拿出来重复使用,从而在一定程度上减少频繁创建对象所造成

的开销。用于充当保存对象的“容器”的对象,被称为“对象池”(Object Pool,或简称Pool)。

对于没有状态的对象(例如String),在重复使用之前,无需进行任何处理;对于有状态的对象(例如 StringBuffer),在重复使用之前,就需要

把它们恢复到等同于刚刚生成时的状态。由于条件的限制,恢复某个对象的状态的操作不可能实现了的话, 就得把这个对象抛弃,改用新创建的实

例了。

并非所有对象都适合拿来池化――因为维护对象池也要造成一定开销。对生成时开销不大的对象进行池化,反而可能会出现“维护对象池的开销”大

于“生成新对象的开销”,从而使性能降低的情况。但是对于生成时开销可观的对象,池化技术就是提高性能的有效策略了。


说道对象池,可能大家第一个想起的就是数据库连接池了.然而 ,我们在使用对象池技术的时候,仅仅只是为了提高性能么?依我看来,池化技术的主要

用途,还是对系统稀缺资源的保护(如数据库连接,IO存取,网络传输等).

也就是说,可以把对象池看成是系统稀缺资源的一个门,这个门可能有多把钥匙,请求只有拥有了钥匙,才能进去这道门.

也就是说: 池可以有效的限制应用对某项资源的访问,从而避免对资源的访问超出了资源本身的承受极限.

分享到:
评论

相关推荐

    java对象池化技术

    java对象池化技术 java对象池化技术 java对象池化技术

    java对象池化技术[参照].pdf

    java对象池化技术[参照].pdf

    commons-pool2-2.4.2.zip

    为了避免重新造轮子,我们可以使用优秀的开源对象池化组件apache-commons-pool2,它对对象池化操作进行了很好的封装,我们只需要根据自己的业务需求重写或实现部分接口即可,使用它可以快速的创建一个方便,简单,...

    基于1D-CNN model 的回归预测.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    中文转拼音实例-基于字符的卷积神经网络-超短文本分类-主要代码为lc222的github项目,有HTTP访问等.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    Java线程池技术详解

    如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。 2.简介 线程池(thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而...

    基于CNN-LSTM-Attention-Protypical Network的鸟类声纹识别.zip

    使用N-way K-shot的few-shot learning。数据集使用DCASE2018 challenge的数据 卷积神经网络(Convolutional Neural Network, CNN)是一种专门针对图像、视频等结构化数据设计的深度学习模型,它在计算机视觉、语音...

    .Net Core中ObjectPool的使用与源码解析

    运用对象池化技术可以显著地提升性能,尤其是当对象的初始化过程代价较大或者频率较高。下面是ObjectPool源码中涉及的几个类。当你看过.Net Core源码很多时,你会发现,微软的开发很多都是这种模式,通过Policy构建...

    spring.net中文手册在线版

    4.10.使用alias节点为对象添加别名 4.11.IApplicationContext简介 4.12.配置应用程序上下文 4.12.1.注册自定义解析器 4.12.2.创建自定义资源处理器 4.12.3.配置类型别名 4.12.4.注册类型转换器 4.13....

    基于1D CNN的火灾检测模型.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    基于CNN+Bi-LSTM+Attention 的自动对对联系统.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    一种基于Mask R-CNN的植物气孔解剖参数测量方法.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    基于GG-CNN预测每个像素的抓取质量和姿态,通过机器人仿真软件Gazebo实时观察待抓取物体的抓取点.zip

    抓取数据集使用康奈尔数据集以及提花数据集;基于kinova机器人搭建实际抓取环境;进行机械臂的手眼标定(Eye-in-Hand);基于pybullet平台仿真实现多个目标… 卷积神经网络(Convolutional Neural Network, CNN)是...

    基于CNN的图像分类器,使用Kaggle的猫狗图片数据。.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    一个基于cnn+attention模型、使用tensorflow实现的情感分析模型.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    基于cnn实现的手写数字识别,加上MNIST的数据,代码里使用mnist数据的接口,所以可以直接运行下载.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    从零开始搭建一个基于CNN+CTC的语音识别系统。.zip

    ### **1. 局部感知与卷积操作** **卷积层**是CNN的基本构建块,它通过使用一组可学习的滤波器(或称为卷积核)对输入图像进行扫描。每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重...

    Java高并发高性能分布式框架从无到有微服务架构设计.doc

    Java高并发高性能分布式框架从...高并发- 多级缓存(分布式缓存)高并发- 池化在应用系统开发过程中,我们经常会用到池化技术,如对象池、连接池、线程池等 ,通过池化来减少一些消耗,以提升性能。 对象池通过复用对象

    基于CNN的手写数字识别APP.zip

    训练数据保存为deep_convnet_params.pkl,UI使用wxPython编写 卷积神经网络(Convolutional Neural Network, CNN)是一种专门针对图像、视频等结构化数据设计的深度学习模型,它在计算机视觉、语音识别、自然语言...

Global site tag (gtag.js) - Google Analytics