美文网首页
CachedIntrospectionResults分析

CachedIntrospectionResults分析

作者: 沩発阢 | 来源:发表于2018-11-23 09:31 被阅读0次

以下是Spring的翻译,水平有限,不当之处,请多多包含!!!


缓存Java类的JavaBeans信息(主要是Java类的PropertyDescriptor)的内部类,不能被应用代码直接使用。

注:因为访问权限是protected只能在同一包名下才能被访问,所以说是内部类。

需要使用应用的ClassLoader来缓存自身的descriptors,而不是使用JDK系统范围的Beaninfo缓存。(主要是为了避免当系统ClassLoader关闭时发生泄漏。)

信息被静态存储起来,因此对于每一个被操作的JavaBean来说,没有必要去创建一个新的CachedIntrospectionResults。因此,这个类使用了工厂模式,使用私有构造器和一个静态的forClass工厂方法来获取实例。

注意为了缓存有效的工作,一些前置条件必须得道满足:偏向于将Spring的jar包和应用的类放在同一ClassLoader下,这样在任何情况下会允许随着应用的生命周期来清楚缓存。对于Web应用来水,建议在web.xml中声明一个IntrospectorCleanupListener来防止多ClassLoader布局,这样也可以有效的利用caching

为防止无清理的ClassLoader也没有清理的监听器,这个类将会使用基于WeakReference的缓存模型,因此在内存回收是会重建很多请求。这种情况下考虑使用spring.beaninfo.ignore的系统配置。


另外简单说下IntrospectorCleanupListener。以下是使用XML配置时的情况

<!--web.xml-->

<listener>

        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

</listener>

2、此监听器应该配置在web.xml中与Spring相关监听器中的第一个位置(也要在ContextLoaderListener的前面)

3、JDK中的java.beans.Introspector类的用途是发现Java类是否符合JavaBean规范如果有的框架或程序用到了Introspector类,那么就会启用一个系统级别的缓存,此缓存会 存放一些曾加载并分析过的JavaBean的引用。当Web服务器关闭时,由于此缓存中存放着这些JavaBean的引用,所以垃圾回收器无法回收Web容器中的JavaBean对象,最后导致    内存变大。而org.springframework.web.util.IntrospectorCleanupListener就是专门用来处理Introspector内存泄漏问题的辅助类。IntrospectorCleanupListener会在    Web服务器停止时清理Introspector缓存,使那些Javabean能被垃圾回收器正确回收。Spring自身不会出现这种问题,因为Spring在加载并分析完一个类之后会马上刷新JavaBeans Introspector缓存,这就保证Spring中不会出现这种内存泄漏的问题。但有些程序和框架在使用了JavaBeans Introspector之后,没有进行清理工作(如Quartz,Struts),最后导致内存泄漏

相关文章

  • CachedIntrospectionResults分析

    以下是Spring的翻译,水平有限,不当之处,请多多包含!!! 缓存Java类的JavaBeans信息(主要是Ja...

  • 常用数据分析方法

    对比分析(现状分析) 趋势分析(预测分析) 矩阵关联分析 分组分析(原因分析-分布情况) 漏斗...

  • 零售业大数据分析

    零售业数据分析包括: 财务分析销售分析商品分析顾客分析供应商分析人员分析 1 财务分析 1)分析企业的财务状况,了...

  • 分析分析分析

    新工作第三天,沒有前兩天覺得那麼難熬。也不是難熬,不過是有些覺得無所事事。今天用SQL導出了工作的數據,然後下午學...

  • 用数据驱动产品和运营 之 数据分析方法

    数据分析方法 多维事件分析 漏斗分析 留存分析 行为序列分析 A/B测试 用户分群 (一)数据分析——多维事件分析...

  • 9种常用的数据分析方法

    公式拆解、对比分析、A/Btest、象限分析、帕累托分析、漏斗分析、路径分析、留存分析、聚类分析 一、公式拆解 所...

  • 数据分析

    数据分析基本方法 对比分析(横向对比纵向对比) 趋势分析 象限分析 交叉分析 数据分析框架_AARRR分析 逻辑分...

  • OpenCV-Python学习(十):图像滤波之傅里叶变换

    滤波分析又分为 时域分析、频域分析: 时域分析: 直接对信号本身进行分析。 频域分析: 对信号的变化快慢进行分析。...

  • 7张脑图讲透如何做好品牌、价格、渠道、市场、机会分析

    1、品牌分析: 2、价格分析 3、广告分析 4、渠道分析: 5、市场机会分析: 6、满意度分析 7、市场细分分析 ...

  • 谁说菜鸟不懂数据分析-读书整理

    数据分析简述: 数据分析分类及作用: 分类:描述性分析,探索性分析,验证性分析 作用:现状分析,原因分析,...

网友评论

      本文标题:CachedIntrospectionResults分析

      本文链接:https://www.haomeiwen.com/subject/dfvdqqtx.html