作者mamasom (mimi)
看板java
标题[问题] 请问在回圈内宣告物件
时间Wed Nov 9 23:09:35 2016
请问一下
假设代码如下两段
1.
for(int i=0;i<10000;i++){
User user = new User();
...
}
2.
User user = null;
for(int i=0;i<10000;i++){
user = new User();
...
}
在执行上的效能会有差吗?
先不论new Object产生的多寡
单纯宣告的写法来说,只宣告一次与宣告一万次
是不是已第二点来说比较好呢?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.160.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1478704177.A.F70.html
1F:→ pttworld: 百万级数人有感。问题是new。 11/09 23:16
2F:推 d1288999: 其实没有差,compiler会帮你优化,可看class档 11/10 00:40
3F:推 LPH66: 宣告没差, 因为实际编译之後变数位置都预先留好了 11/10 00:40
4F:→ LPH66: 所以这两种方式的差别就只是 user 这边数外面看不看得到 11/10 00:40
5F:→ LPH66: 这变数* 11/10 00:41
6F:→ ssccg: 宣告只是编译时留位置,在执行期有差的是 new 11/10 09:10
7F:→ ssccg: 宣告区域变数在执行期只是method call时stack frame大一点 11/10 09:13
8F:→ ssccg: 在同个method中放在什麽地方都一样在method的stack frame 11/10 09:14
9F:→ swpoker: 大量就有差~head会爆 11/10 09:47
10F:→ swpoker: heap拉 11/10 09:47
11F:→ adrianshum: 楼上:op 问是两种方式有没差。会爆heap的情况两者都 11/11 10:34
12F:→ adrianshum: 会。 11/11 10:34