private String largeString = new String(new byte[100000]);
private String smallString = "foo";
String getString() {
// if caller stores this substring, this customer will not be gc'ed
//return this.largeString.substring(0,2);
return new String(this.largeString.substring(0,2)); // no error here!
// return smallString; // no error here!
}
public static void main(String[] args) {
java.util.ArrayList list = new java.util.ArrayList();
for (int i = 0; i < 1000000; i++) {
TestGC gc = new TestGC();
list.add(gc.getString());
}
}
}