【发布时间】:2019-11-24 18:32:55
【问题描述】:
假设我有一堂课
Box(double xi, double yi, double zi, double xf, double yf, double zf)
我有一个方法
Box#collides(Box other){
if(other.xf < xi || other.xi > xf) return false;
if(other.yf < yi || other.yi > yf) return false;
return other.zf >= zi && other.zi <= zf;
}
然后我得到两个盒子。我比较第一个
Box(a,b,c,d,e,f)
.collides() 到另一个盒子,
Box(A,B,C,D,E,F)
仍然会创建 Box 对象吗?或者JVM会很聪明并使用类似于
static collides(double xi, double yi, double zi, double xf, double yf, double zf, double xi, double oyi, double ozi, double oxf, double oyf, double ozf){
if(oxf < xi || oxi > xf) return false;
if(oyf < yi || oyi > yf) return false;
return ozf >= zi && ozi <= zf;
}
这似乎是一种微优化,但就我而言,可能有数百万个 Boxes 正在被实例化。
【问题讨论】:
-
你问是否有两个盒子对象会消失并创建一个新方法?
-
我在问 JVM 是否不必创建盒子对象,而是使用类似于我提供的静态方法的东西。
标签: java optimization jvm