Używam operatora diamentów do inicjowania obiektów na liście. Jednak wraz ze wzrostem liczby obiektów macierzy czas kompilacji wzrasta z kilku sekund do godzin. Moja kompilacja auto-eclipse spowodowała, że moje zaćmienie nie odpowiadało. Zauważyłem, że jest to problem javac. Po zamianie całego <>
na <String, List<Category>>
czas kompilacji wraca do zaledwie kilku sekund. Czy to coś, co robię źle, czy jest to tylko problem z wydajnością Java?Inicjalizacja obiektu Java za pomocą operatora diamentowego straszny czas kompilacji javac
Tu jest mój kod, który będzie trwać Java skompilować (lub zawiesza 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: Jak Sotirios wspomniano w komentarzach wydaje się być zgłoszony problem w JDK :
rodzaj wnioskowania wykładniczy wydajność kompilacja: https://bugs.openjdk.java.net/browse/JDK-8055984
typ wydajność wnioskowanie regresji: https://bugs.openjdk.java.net/browse/JDK-8048838
jesteś pewna jego problem javac? Eclipse używa własnego przyrostowego kompilatora zamiast javac. – WonderCsabo
Co masz na myśli, gdy kompilator się zawiesił? Czy masz jakiś stacktrace? –
Nawet instalacja mvn clean utknie, gdy dojdzie do "Kompilowania 172 plików źródłowych do ...." –