锁定老帖子 主题:JVM创建一个新对象到底有多大的代价?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-02
最后修改:2009-04-02
好像是在听一人讲JVM性能调优方面事时, 知道了尽量减少JVM创建对象,因为那样会消耗不少资源. 有了这样的mindset后,自己编码也就尽可能地少创建对象了. for(int i=0;i< 10000;i++) { new Object(); }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-02
除了真的进行复杂的科学计算,否则普通的应用,性能瓶颈一般都发生在IO上,这IO包括,读写磁盘,socket,等。IO操作的代码往往会成为那个给你带来80%性能损失的那20%的代码。
|
|
返回顶楼 | |
发表时间:2009-04-02
GC时间?
|
|
返回顶楼 | |
发表时间:2009-04-02
如果是用Sun Hotspot的话,可以开-XX:+PrintGCDetails开关来观察到底GC在什么时候做了什么事。
跟随楼主,测试这样一段代码: public class TestObjectCreation { private static void foo() { final int MAX = 10000000; for (int i = 0; i < MAX; ++i) { new Object(); } } public static void main(String[] args) { foo(); } } 查看JIT出来的结果,感觉挺意外的。foo()方法基本上没被优化,i放在了EBX里,每个循环规规矩矩的递增;循环体内的new Object()也规规矩矩的每次都被调用。我原本来以为在方法足够热的时候,Hotspot能把这个新建对象的动作优化掉的。看来要么是这个方法还不够热,要么是……我也不清楚,没读过那部分源码。 |
|
返回顶楼 | |
发表时间:2009-04-02
垃圾收集已经针对大量的短命对象优化过了。创建大量的这样的对象对性能没有太大的影响。
|
|
返回顶楼 | |
发表时间:2009-04-02
最后修改:2009-04-02
JVM没测试过
但是在flash的VM中创建对象的开销貌似是挺大的 我曾经写过一个AIR的本地播放器类似这种 http://222.243.146.200/html/anime/20090402/25579.html 结果是把所有评论在加载时全部创建为控件对象 比加载时存为字符串在播放时动态创建与释放控件(在同一时间需要创建的弹幕数量比教大时)要流畅得多 当然这里的控件的创建开销不是一个object能比的 |
|
返回顶楼 | |
发表时间:2009-04-08
如果是比较复杂的对象的,如果构造方法本身的执行方法本来就很长呢
|
|
返回顶楼 | |
发表时间:2009-04-14
The common code path for new Object() in HotSpot 1.4.2 and later is approximately 10 machine instructions. (from: http://www.ibm.com/developerworks/java/library/j-jtp09275.html?S_TACT=105AGX52&S_CMP=cn-a-j)
|
|
返回顶楼 | |
发表时间:2009-08-07
按照gc group的一个报告:
Typically, object allocation is very cheap! ● 10 native instructions in the fast common case ● No remembered set overhead on new objects ● C/C++ has faster allocation? Not! ● Reclamation of new objects is very cheap too! ● Young GCs in generational systems ● So ● Do not be afraid to allocate small objects for intermediate results ● GCs love small, immutable objects ● Generational GCs love small, short-lived objects 用Object对象测估计说明不了多大问题。 [url] http://developers.sun.com/learning/javaoneonline/2007/pdf/TS-2906.pdf [/url] |
|
返回顶楼 | |
浏览 2668 次