Java JVM是否删除了不必要的类实例化?

Java JVM是否删除了不必要的类实例化?,java,optimization,jvm,Java,Optimization,Jvm,假设我有一节课 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 &g

假设我有一节课

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;
}
使用
.collide()
到另一个框

Box(A,B,C,D,E,F)
是否仍将创建长方体对象?或者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;
}
<代码>静态碰撞(双席、双益、双子、双XF、双YF、双ZF、双席、双OYI、双OZI、双OXF、双OYF、双OZF){ 如果(OXF<席氏Oxi-xf)返回假; 如果(oyfyf)返回false;
返回ozf>=zi&&ozi这可能发生,也可能不发生。HotSpot JVM可以这样做,但只有当所有内容都在单个方法中内联时(除了通过内联转换为过程间优化之外,没有过程内优化)

它必须在单个过程中(内联后)看到while分配、测试和超出范围。这很可能发生,但不能保证。然而,几百万个框意味着大约60兆字节的几倍,这是很多,但每秒分配几兆字节是很常见的


如果你想确定,提供一个方法,比如“代码>盒子β碰撞”(双席,双彝,双子,双XF,双YF,双ZF)

您问的是是否有两个box对象,它们是否会消失并创建一个新方法?我问的是JVM是否不必创建box对象,而是使用类似于我提供的静态方法。请参阅
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;
}