在jdk1.5的Container中执行组件添加的时候会有一个
ContainerPeer cpeer = (ContainerPeer)peer;
if (cpeer.isRestackSupported()) {
    cpeer.restack();
}
这个操作,而在jdk1.7中好像被去掉了,而执行的结果是在jdk1.5的环境下添加4000多得组件需要300s左右,而在jdk1.7的环境下只需要几十秒,我对比过两个版本的jdk,在添加组件的时候jdk1.7里面去掉了Container和Component中的restack操作。它们性能上的差异是不是就是频繁压栈的原因呢。求高手指教

解决方案 »

  1.   

    我也没有办法啊,有项目要求在jdk1.5下添加组件的性能提升到jdk1.7的环境一样,正在头痛
      

  2.   

    在jdk1.5的Container的addNotify()方法有这么一段代码
    // Update stacking order if native platform allows
    ContainerPeer cpeer = (ContainerPeer)peer;
    if (cpeer.isRestackSupported()) {
           cpeer.restack();
    }有谁知道这里所谓的本地平台是否允许是在哪里设置的啊?
    求高手指教。
      

  3.   

    这个是老外吃饱了没事干,想看看它的性能能不能得到提升,想出来的加大量组件,不过我在jdk1.7中运行的时候,加载同样的组件使用的时间却很少只有几十秒,也就是说应该是可以提升的。
      

  4.   


    那为什么不直接用jdk1.7呢?老外想什么呢?不过楼主,我支持你。研究的这么细致。佩服呢。
      

  5.   

    jdk优化的不仅有代码,还有jvm,你无法确定是那一块带来了你那一块的性能提升
      

  6.   

    为这么不直接jdk升到1.7?
    问题不解决了?
      

  7.   

    问过客户,他们不接受升级jdk的方法
      

  8.   

    我去修改过jdk的底层代码测试过了,的确有一点点提升,但达不到要求哦,哎,已经放弃去和底层代码较劲了,有一些实现代码看不到,先自己写都成问题哦,有谁知道WPanelPeer这个类里面的源代码怎么看得到不。还有就是我一直郁闷一件事就是jdk1.5环境下添加一千多条组件的时候只要几十秒,当加3500多条组件的时候却要300多s是怎么回事呢?求懂这个的高手指教下,我都卡在这里半个月了