мой код здесь =>
class PointHolder {
private Point point;
public PointHolder(Point point) {
this.point = point;
}
//getter
}
class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
//getter setter
}
public class Escape {
public static void main(String[] args) {
for (int i = 0; i < 20000; i++) {
test4(i);
}
}
static int foo;
public static void test4(int x) {
PointHolder pointHolder = new PointHolder(new Point(x + 2, 42));
foo = pointHolder.getPoint().getX();
}
}
используйте jitwatch, я мог видеть, что pointHolder не выделен, но new Point(x+2, 42)
все еще выделен.
я не мог понять почему
foo
присваивается значение, но никогда не объявляется, а методgetX()
в классеPoint
упоминается, но никогда не определяется. Если вы ожидаете, что мы вам поможем, опубликуйте свой самый последний и актуальный код. - person mario_sunny   schedule 03.11.2019new Point(x + 2,42)
не устранено. - person lovezhy   schedule 03.11.2019escape analysis
, область действияnew Point()
находится в методе test4, поэтому выделениеnew Point()
следует исключить. - person lovezhy   schedule 03.11.2019