jvm zarządza pulą ciągów dla String, z której wyszukuje nowe przypisanie String, podobnie, czy możemy utworzyć pulę dowolnego innego obiektu lub elementów pierwotnych?Czy można utworzyć pulę obiektów podobną do łańcucha?
Odpowiedz
Pula interakcji dla stałych łańcuchowych Java jest znana kompilatorowi Java, więc nie można naśladować dokładnie tego zachowania.
Jednak sama pula to nic innego jak mapa skrótów. Jeśli Twój obiekt ma odpowiedni identyfikator, możesz zrolować pulę dla własnych obiektów: po prostu stwórz statyczną metodę, która pobiera klucz, wyszukuje go w statycznej mapie skrótów i buduje nowy obiekt tylko wtedy, gdy nie został połączony jeszcze. Zauważ jednak, że aby ten prosty schemat działał, ważne jest, aby obiekt był niezmienny.
basen String nie jest tylko basen/cache Java, Integer i innych klas otoki używać pamięci podręcznej, można spojrzeć na kodzie źródłowym Integer jako przykład
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
można również spojrzeć pod adresem http://commons.apache.org/proper/commons-pool//
- 1. Jak utworzyć pulę obiektów, aby móc pożyczać i zwracać obiekty?
- 2. Jak utworzyć wiadomość powiadomienia użytkownika podobną do JGrowl
- 3. Czy można utworzyć ogólną klasę Repozytorium dla wszystkich moich obiektów?
- 4. nawrócony Tablica obiektów do połączonego łańcucha
- 5. Konwersja listy tablic do łańcucha obiektów Json
- 6. Nie można utworzyć tablicę listy obiektów
- 7. Czy można utworzyć kolejkę do zestawu HashMap?
- 8. Wyświetl mapę podobną do OpenStreetMap
- 9. Narysuj nakładkę podobną do MapsApp
- 10. Jak utworzyć pulę połączeń PostgreSQL za pomocą Java?
- 11. Jak zrobić aplikację podobną do Flipboard?
- 12. Czy można utworzyć alias szablonu?
- 13. Czy Amazon S3 ma pulę połączeń?
- 14. Jak utworzyć pulę aplikacji za pomocą aplikacji appcmd?
- 15. Czy można utworzyć wektor bitsets?
- 16. Czy można utworzyć przezroczyste płótno?
- 17. Czy można utworzyć wektor wskaźników?
- 18. Nie można zastosować CSS do łańcucha html
- 19. Tworzenie wielokrotnego użytku UIView podobną do UITableViewCell
- 20. Czy VB.NET ma funkcjonalność podobną do "IN" TSQL?
- 21. Czy Android ma koncepcję wypełniania aspektu podobną do systemu iOS?
- 22. Czy ktoś zna jakąkolwiek usługę podobną do Tropo?
- 23. jak stworzyć aplikację podobną do Viber?
- 24. Analog PHP z funkcją podobną do mysql
- 25. Dlaczego obiektów nie można utworzyć bez użycia słowa kluczowego class?
- 26. W wix można ustawić pulę aplikacji dla witryny sieci Web?
- 27. Jak utworzyć bitset z łańcucha binarnego?
- 28. Dynamicznie stwórz klasę Ruby podobną do Javy
- 29. Czy cursor.getString() przymusuje int do łańcucha znaków?
- 30. Czy można utworzyć cel "nadzbiór" w Xcode?
, więc zasadniczo utrzymanie statycznej hashMap będzie replikować pulę. dobrze? , a to oznacza mniejszą liczbę pól w puli typu, bardziej efektywne/wydajne buforowanie byłoby? – Ankit
@ ay89 Ogólnie rzecz biorąc, tworzenie puli będzie skuteczne tylko wtedy, gdy pomiędzy tworzonymi obiektami będzie dużo duplikacji. Możesz mieć obiekt z 30 polami przedstawiającymi klienta, wraz z jego adresem, numerami telefonów itp. Jeśli masz tylko 100 klientów, twoja łączność będzie bardzo wydajna nawet w przypadku zajęć, które mają wiele pól. Jeśli, z drugiej strony, spróbujesz połączyć klasy reprezentujące współrzędne w 2D (pary liczb całkowitych) i użyć go na zestawie 10 000 losowo wygenerowanych współrzędnych, buforowanie nie będzie w ogóle wydajne, nawet jeśli istnieją tylko dwa pola. – dasblinkenlight
ok, ale jeśli istnieje więcej duplikatów obiektów o większej liczbie pól, zbieranie będzie efektywne pod względem pamięci. ale w tym samym czasie, myślę, że pochłonie więcej czasu, porównując większą liczbę pól, aby zdecydować, czy obiekt jest duplikatem czy nie. dobrze? – Ankit