zoukankan      html  css  js  c++  java
  • getBean(class )并发下性能较差,有锁.

     spring 版本3.1.2

    1. spring 并没有缓存 class -> beanDifinition 或者 sington 实例的缓存.

    2. 只能先获取所有的beanDifitions [ 含 sington 和 prototype ] + 所有manually registered的 bean

    3. getBeanDefinitionNames 这里有锁,性能较差.

      原因, 线程阻塞,线程池耗尽, 外部请求耗时都比较少,但是最终返回耗时都比较高.

       这种极有可能 1. 某些 io 调用耗时增加(未监控) 2. 线程池满等待 3. tcp 复用等待 4.swap 耗时等待 5.gc 耗时

       查看 jstack pid, 发现很多阻塞在 getBean 上,

    public String[] getBeanDefinitionNames() {
    		synchronized (this.beanDefinitionMap) {
    			if (this.frozenBeanDefinitionNames != null) {
    				return this.frozenBeanDefinitionNames;
    			}
    			else {
    				return StringUtils.toStringArray(this.beanDefinitionNames);
    			}
    		}
    	}
    

  • 相关阅读:
    Spring的历史和哲学
    CORS简介
    LDAP概念了解
    Restful levels&HATEOAS
    python/mysql connector
    Session&Cookie 简介及使用
    XML简介
    Json简介
    《魅族官网》
    期末设计部分代码截图
  • 原文地址:https://www.cnblogs.com/fei33423/p/7887002.html
Copyright © 2011-2022 走看看