Sto utilizzando l'operatore di diamante per avviare oggetti all'interno di un elenco. Tuttavia, con l'aumentare del numero di oggetti dell'array, il tempo di compilazione aumenta da pochi secondi ad alcune ore. La mia auto-eclisse ha reso la mia eclisse non reattiva. Ho poi notato che si tratta di un problema di javac. Quando sostituisco tutto <>
con <String, List<Category>>
, il tempo di compilazione risale a pochi secondi. È qualcosa che sto facendo male o è solo un problema di prestazioni Java?Inizializzazione di oggetti Java con operatore di diamanti terribile prestazioni di compilazione javac
Ecco il mio codice che avrà ore Java per compilare (o crash javac v8u25):
List<Pair<String, List<Category>>> categoryMappings = null;
public void reloadStaticData() {
// Left one is the provider's category and right one is ours
try(UoW luow = CoreModule.getInstance(UoW.class)) {
CategoryRepo categoryRepo = luow.getCategoryRepo();
categoryMappings = Arrays.asList(
// Nightlife
new ImmutablePair<>("Bars", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get())),
new ImmutablePair<>("Ski-Bar", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get())),
new ImmutablePair<>("Bar", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get())),
new ImmutablePair<>("Beer", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get())),
new ImmutablePair<>("Pubs", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get())),
new ImmutablePair<>("Clubs", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get())),
new ImmutablePair<>("Dance", Arrays.asList(categoryRepo.findByName("Bar & Pubs").get()
,categoryRepo.findByName("Clubs").get())),
// if I got more than 20 of these ImmutablePairs, javac crashes or takes hours to compile
);
}
}
Edit: Come Sotirios accennato nei commenti che sembra essere un problema segnalato in JDK :
inferenza di tipo esponenziale le prestazioni di compilazione: https://bugs.openjdk.java.net/browse/JDK-8055984
tipo prestazioni inferenza di regressione: https://bugs.openjdk.java.net/browse/JDK-8048838
Sei sicuro che sia un problema javac? Eclipse utilizza il proprio compilatore incrementale invece di javac. – WonderCsabo
Cosa intendi per errore del compilatore? Hai qualche stacktrace? –
Anche mvn clean install, rimane bloccato quando raggiunge "Compilazione di file di origine 172 su ...." –