В строке, которую я пометил //D, есть одноразовое использование с экземпляром объекта Scanner. но его память останется в куче, пока программа играет (что навсегда). почему сборщик мусора не удалит этот объект экземпляра? как я могу изменить код, чтобы сборщик мусора удалил этот экземпляр из-за программы? спасибо
package Try;
import java.util.Random;
import java.util.Scanner;
public class Foo1 extends Thread {
private int min_, max_;
Foo1(int max, Integer min) {
max_ = max;
min_ = min.intValue();
}
public void run() {
Random rand_gen = new Random();
while(true) {
try {
Thread.sleep(rand_gen.nextInt(max_-min_) + min_);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("you got new message");
}
}
public static void main(String[] args){
System.out.println("Insert 1 to start");
Scanner sc = new Scanner(System.in); // D
int i = sc.nextInt();
if (i == 1) {
Foo1 f1;
int max = 1000;
Integer min = new Integer(1000);
Foo1 f2 = new Foo1(max, min);
f1 = f2; // A
f1.start();
}
}
}
Scanner
остается в памяти? Вы уверены, что сборщик мусора запущен? - person Slaw   schedule 09.02.2020