Mam aplikację, która odbiera wiadomości binarne przez WebSocket często (przynajmniej raz na klatkę) i rysuje dane, używając canvas/webgl. Zauważyłem, że mam całkiem niezły profil pamięci piłokształtnej; wiele krótkich fragmentów danych. Często zadawane przez WebSocket zera-kopia
To mnie nie dziwi, ponieważ jestem otrzymaniu przedmiotu z onmessage
, co najmniej raz na 16ms, który jest używany do rysowania, a następnie de-odwołuje.
Moje pytanie brzmi: czy są jakieś wskazówki, jak tego uniknąć/zminimalizować? Opierając się na WebSocket API, nie wydaje się być alternatywą dla posiadania nowej pamięci przydzielonej na każde połączenie odbierania gniazda. W innym języku/środowisku, wstępnie przydzielę trochę pamięci i odbiorę do tego bufora, aby uniknąć stałego przydzielania pamięci dla obiektów krótkotrwałych, ale nie mogę wymyślić żadnego oczywistego sposobu osiągnięcia tego w JavaScript w przeglądarce.
Dla odniesienia, oto mój widok Frames.
Nie wiem, czy to czas bezczynności jest zbieranie śmieci? Wszelkie dociekania ninja z narzędziami od narzędzi będą bardzo mile widziane.
Masz jakieś próbki kodu? zacząłem coś? skrzypce? – Anonymous0day
Mam ten sam problem z datą czujnika transmisji strumieniowej z mojego raspberry pi przez WebSockets. Obawiam się, że nie ma i nie będzie możliwości ingerencji w pamięć alokacji WebSockets w javascript. Moje badania nie przyniosły żadnych rezultatów. – windm
Co masz nadzieję osiągnąć? Jak długo działa program i jak ważna jest spójna, długowieczna wydajność? Zobaczenie małego kodu lub próbki kodu byłoby wspaniałe –