锁定老帖子 主题:PHP会倒掉吗?
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-11
icewubin 写道
你列了个JavaEE6?唉,原来之前的那些JavaEE或者J2EE都不算的啊。(到此发现原来你说的J2EE Container的前提条件是要实现JavaEE6,不讨论了,真累啊。)
resin只支持ejb 3.0啊,列表中技术跟J2EE 5.0的差不多,多数只是版本号不同而已,但我要是找更老一点儿的版本,你又好找理由开脱了,哈哈。
|
|
返回顶楼 | |
发表时间:2009-12-11
最后修改:2009-12-11
yipsilon 写道
icewubin 写道
yipsilon 写道
http://java.sun.com/products/hotspot/2.0/README.html
http://download.oracle.com/docs/cd/E13155_01/wlp/docs103/quickstart/memory.html
http://java.sun.com/j2se/1.5.0/docs/guide/vm/server-class.html
http://java.sun.com/products/hotspot/docs/general/hs2.html
先找这四个,你多多理解吧。
|
|
返回顶楼 | |
发表时间:2009-12-11
icewubin 写道
你说的“不难想象”和“大都数情况下”都是没有依据的:
例如A引用了Z,B引用了Z,classloader加载了A,也只会加载Z,而不会加载B。 所以我反而认为大多数情况下,一个jar包里的类是不相关联的,当然我这里说的不相关联是指classloader不会从Z加载到B的,因为B引用Z是单向的。 这个你说对了,但是如果A引用B、B引用C了,那么在server版中ABC都会被预先加载,而client版中只有在调用A中使用B的方法时B才会被真正加载。
J2EE中,同技术中API之间的关联性很大,其实现中关联度也可想而知了。在j2ee container启动时,势必要加载大部分的类数据,启动缓慢是正常的,但是由于都是预先加载且优化好了,在执行时速度比client版快多了。
从你的观点来考虑,这也是有可能的,比如你做了个工具类库包,里面的类不依赖于任何其他技术的API,这样可以做到,但是大多数情况下可能么?呵呵。 |
|
返回顶楼 | |
发表时间:2009-12-11
icewubin 写道
第一个相关的说了如何Using,第二个相关的说了Settings,第三个相关的说了各平台的Default VM,第四个说了Server VM的特性:Security、Robustness、Dynamic Compilation、Summary,连个class loader的影子都没有。 找文章很累的,不要轻易地浪费掉别人的工作成果。你本来就有断章取义的习惯,麻烦你一句一句仔细看完吧,不要用搜索功能搜那些词组啦。 |
|
返回顶楼 | |
发表时间:2009-12-11
yipsilon 写道
icewubin 写道
你说的“不难想象”和“大都数情况下”都是没有依据的:
例如A引用了Z,B引用了Z,classloader加载了A,也只会加载Z,而不会加载B。 所以我反而认为大多数情况下,一个jar包里的类是不相关联的,当然我这里说的不相关联是指classloader不会从Z加载到B的,因为B引用Z是单向的。 这个你说对了,但是如果A引用B、B引用C了,那么在server版中ABC都会被预先加载,而client版中只有在调用A中使用B的方法时B才会被真正加载。
J2EE中,同技术中API之间的关联性很大,其实现中关联度也可想而知了。在j2ee container启动时,势必要加载大部分的类数据,启动缓慢是正常的,但是由于都是预先加载且优化好了,在执行时速度比client版快多了。
从你的观点来考虑,这也是有可能的,比如你做了个工具类库包,里面的类不依赖于任何其他技术的API,这样可以做到,但是大多数情况下可能么?呵呵。
大多数情况下,都是单向引用的对象图,循环引用或双向引用的出现概率一般都是不高的,即使有,也只是在很小一部分类之间有循环引用、或双向引用。 |
|
返回顶楼 | |
发表时间:2009-12-11
最后修改:2009-12-11
yipsilon 写道
icewubin 写道
第一个相关的说了如何Using,第二个相关的说了Settings,第三个相关的说了各平台的Default VM,第四个说了Server VM的特性:Security、Robustness、Dynamic Compilation、Summary,连个class loader的影子都没有。 找文章很累的,不要轻易地浪费掉别人的工作成果。你本来就有断章取义的习惯,麻烦你一句一句仔细看完吧,不要用搜索功能搜那些词组啦。
我真是全篇看了下,最后为了保险起见再搜了把loader,真没找到啊。
我也知道很累,实在找不到才请教你啊。第四个我刚才就看过,所以还记得特别清楚,在你给我链接之前,我就已经看过了。 |
|
返回顶楼 | |
发表时间:2009-12-11
icewubin 写道
大多数情况下就是这样的。
大多数情况下,都是单向引用的对象图,循环引用或双向引用的出现概率一般都是不高的,即使有,也只是在很小一部分类之间有循环引用、或双向引用。 我之前举的“A引用B、B引用C”是单向引用吧?这样的例子太多了啊,难道你写的工具类一点儿也不调用其他的API?就拿你之前跟别人讨论的lucene来说,你如果调用了他里面的一个类,它势必要装载包中其他相关的类进入到内存中。这对于你的工具类来说,都是单向引用。 |
|
返回顶楼 | |
发表时间:2009-12-11
貌似,讨论到现在,没看到你对server版jvm的特性有多少了解。 不过最后一句话挺好玩儿,真的仔细看过了?难道没有看到这个? 还有下面的Method Inlining的话,如果英文能看懂的话,你分析一下就知道了。 |
|
返回顶楼 | |
发表时间:2009-12-11
最后修改:2009-12-11
yipsilon 写道
icewubin 写道
大多数情况下就是这样的。
大多数情况下,都是单向引用的对象图,循环引用或双向引用的出现概率一般都是不高的,即使有,也只是在很小一部分类之间有循环引用、或双向引用。 我之前举的“A引用B、B引用C”是单向引用吧?这样的例子太多了啊,难道你写的工具类一点儿也不调用其他的API?就拿你之前跟别人讨论的lucene来说,你如果调用了他里面的一个类,它势必要装载包中其他相关的类进入到内存中。这对于你的工具类来说,都是单向引用。
我再举个例子吧,如果你还是不明白,这个话题也可以打住了: 假设一个最简单的多态程序,7个类A、B、C、D、E、F、G都继承或实现了接口X,当调用A的时候,只会牵涉到A和X两个类,占整个类的数量的1/4,这还仅仅是一个package中的情况。
再做个比喻,撇开小部分的双向引用和循环引用,大部分的类图,更像一颗树形结构,从最下面分支开始调用,单向引用,逐渐向上,充其量不过加载了一个很小分支的类的数量,和整棵对象数比起来,根本就是很小的一部分,而不是你说的“不难想象”和“大多数情况”。
当然我拿不出直接的数字来说明实际的某个项目的jar包中,引用一个类到底会单向引用引出多少类,我也不想在这上和你耗费时间,有兴趣你可以自己写个小工具,或者用某些对象分析工具,把某个包中的对象图分析一下,看看对象树长什么样子。
|
|
返回顶楼 | |
发表时间:2009-12-11
yipsilon 写道
貌似,讨论到现在,没看到你对server版jvm的特性有多少了解。 不过最后一句话挺好玩儿,真的仔细看过了?难道没有看到这个? 还有下面的Method Inlining的话,如果英文能看懂的话,你分析一下就知道了。
这两段段说了半天的call stack,说明只和调用的时候才有关,而且更多的是在说安全方面的特性,没有出现你说的只根据单向引用就会把class加载入call stack的内容。 |
|
返回顶楼 | |