Ponieważ nowo utworzony obiekt jest przydzielany do nowej generacji. Czy jest możliwe, aby nowo utworzony obiekt był przydzielany bezpośrednio do starego lub stałego pokolenia? jeśli tak, to na jakich bazach?Czy obiekt może być tworzony w starym pokoleniu?
Odpowiedz
Patrz "Frequently Asked Questions about Garbage Collection in the HotspotTM JavaTM Virtual Machine":
Do obiektów kiedykolwiek przeznaczono bezpośrednio do starego pokolenia?
W 1.4.1 tam dwie sytuacje, w których podział może wystąpić bezpośrednio do starej generacji.
Jeśli alokacja nie powiedzie się w młodym pokoleniu, a obiekt jest dużą tablicą , która nie zawiera żadnych odniesień do obiektów, może być przydzielona bezpośrednio do starej generacji. W niektórych wybranych przypadkach strategia ta miała na celu uniknięcie zbędnego generowania nowej generacji przez alokację ze starego pokolenia.
nie jest flaga (dostępny w 1.4.2 i później) L-XX: PretenureSizeThreshold =, które mogą być ustawione w celu ograniczenia wielkości alokacji w młodym pokoleniu. Każda alokacja większa niż niż ta nie będzie podejmowana w młodym pokoleniu, a więc zostanie przydzielona ze starej generacji.
Rozmiar progu dla 1) to słowa 64k. Domyślny rozmiar dla PretenureSizeThreshold wynosi 0, co oznacza, że w młodym pokoleniu można przydzielić dowolny rozmiar .
W przypadku 1.4.2 1) próg słowa 64k nadal jest prawdziwy dla inkrementalnego kolektora (-Xincgc). Dla domyślnej kolektorem a równoczesne kolektor (-XX: + UseConcMarkSweepGC) wartości progowej został zmieniony tak, że próba przeznaczyć do starego pokolenia występuje tylko wtedy, gdy wielkość alokacji jest większy niż cały młodego pokolenia (dostępne miejsce, gdy jest puste). Zaobserwowano, że w przypadkach, w których strategia 1.4.1 dla domyślnego kolektora zbierającego i kolektora współbieżnego prowadziły do pełnych kolekcji, tylko (nie były wykonywane żadne zbiory młodej generacji). Uznaliśmy, że wystarczająco źle, aby podnieść próg.
rozumiem. Dzięki. :) –
to nie jest absolutnie absolutnie, wyślij tutaj: http://stackoverflow.com/questions/24618467/size-of-huge-objects-directly-allocated-to-old-generation/24618819?noredirect=1#comment38154886_24618819 –
- 1. Szablon klasy może być tworzony bez członków?
- 2. Czy obiekt przypadku Scala może być użyty w przypadku dopasowywania
- 3. Obiekt jest tworzony dwa razy w Pythonie
- 4. Czy obiekt TTimer może być polem klasy Delphi?
- 5. Python - obiekt może być jego własnym typem?
- 6. Czy obiekt klasy ObjC może być zgodny z protokołem?
- 7. Czy JavaScript może być bootowany?
- 8. Czy javascript może być wbudowany w WebPacka?
- 9. Czy EntryElement może być wieloliniowy w MonoTouch.Dialog?
- 10. Czy metoda w klasie może być generatorem?
- 11. Czy to może być rekurencyjne w Prologu?
- 12. Czy REST w praktyce może być bezpaństwowcem?
- 13. Czy zakres może być dopasowany w Scali?
- 14. Czy istnieje jakaś sztuczka do wykrywania, czy obiekt jest tworzony podczas wykonywania innego destruktora?
- 15. CachedRowSet: czy nadal może być używany do przechowywania danych ResultSet?
- 16. Stała obiekt nie może być przekazany jako parametr var
- 17. Czy obiekt z arkuszem roboczym może być zadeklarowany globalnie w programie Excel VBA?
- 18. Czy kod może być uruchamiany, gdy obiekt znajdzie się poza zakresem w .Net?
- 19. Czy wektor :: shrink_to_fit może być ponownie przydzielony?
- 20. Czy sqlite może być również bazą danych?
- 21. Czy wydajność C++/CLI może być wyższa?
- 22. Czy ładowanie eksportowanych symboli może być opóźnione?
- 23. .NET - czy App.Config może być osadzony?
- 24. Czy operator obsady może być jawny?
- 25. Czy tablica może być za duża?
- 26. Czy ta próbka skrótu może być krótsza?
- 27. Czy FBML może być używany w aplikacji Facebook iFrame?
- 28. Czy ikona Google +1 może być dostosowywana?
- 29. Czy std :: function może być serializowane?
- 30. Czy td może być wewnątrz td
Nie powinno się martwić ani dbać o to, jak działa śmieciarz. – Wug