Вопрос говорит все. У меня есть структура данных, которую я не могу маршала из-за слабой хэш-таблицы .. интересно, могу ли я от нее избавиться :)Как используются слабые массивы?
ответ
Слабый массив - это массив слабых указателей. Слабый указатель - это ссылка на значение, которое может быть собрано в мусор.
Если вы используете обычный указатель на значение, вы предотвратите его сбор мусора до тех пор, пока рефери сам не соберет мусор. При слабой ссылке значение может быть собрано перед судьей.
Примером использования является источник, который передает данные нескольким приемникам. Если источник имеет регулярные указатели на приемники, всякий раз, когда приемник больше не нужен, он не будет собирать мусор до тех пор, пока источник не будет (что, например, никогда не произойдет). Если источник использует слабые ссылки на приемники, данные приемники могут быть собраны мусором перед источником.
Другим примером является hashconsing для типа, который использует слабые hashtables (которые включают слабые массивы). Быстро, hashconsing - это способ запомнить все значения заданного типа, которые созданы и живут в программе. Вместе с соответствующим конструктором значений это может обеспечить максимальное разделение значений этого типа и позволяет реализовать структурное равенство в этом типе как физическое равенство. В этом случае, если используется не слабая хеш-таблица, значения, которые больше не используются программой, никогда не будут собираться мусором.
И, наконец, многие люди думают (ошибочно), что слабые ссылки полезны для реализации кешей. Храните слабую ссылку на значение, если это был сбор мусора, перезагрузите/пересчитайте значение. Это не хороший алгоритм кэширования, поскольку основная сборка мусора возвращает любое значение, на которое больше не ссылаются. Таким образом, ваш алгоритм кэширования не имеет предсказуемости или полезного свойства, например, размер кеша/доступной памяти не превышает заданного отношения.
Используйте двоичную пару функций отображения между вашей структурой данных и ее структурно конгруэнтным представлением, совместимым с модулем Маршалла.
Я не могу дать вам галочку, а Джеймс, хотя я бы хотел. См. Следующий .. – Yttrill
Проблема в том, что это таблица символов для схемы OCS, очевидная вещь для сохранения - это s-выражение перед компиляцией. Проблема в том, что «save» является частью Dypgen, сохраняя автомат, и я не могу легко отключить скомпилированную схему с автомата. – Yttrill
На самом деле я мог бы сделать это, просто назначив каждому действию Parser целое число, сохраните его и отдельно сохраните s-выражения до компиляции. Но тогда у меня есть проблема: как мне избежать перекомпиляции кода схемы каждый раз при сокращении производства? – Yttrill
- 1. Массивы в C используются через указатели?
- 2. Как объявить слабые уведомления
- 3. Как реализованы слабые ссылки?
- 4. Почему слабые указатели полезны?
- 5. Как сериализовать общие/слабые указатели?
- 6. Как совместить слабые функции карусели
- 7. Заполнить объект, в котором объекты повторно используются, и массивы заменяются?
- 8. Слабые ссылки в python
- 9. Слабые ссылки или указатели
- 10. Слабые ссылки в Perl
- 11. Слабые правила в Prolog
- 12. Слабые таблицы в lua - Каковы практические занятия?
- 13. Слабые события и GC
- 14. Слабые ETAG в Rails?
- 15. Понимание Слабые ссылки
- 16. Слабые события в .NET?
- 17. Слабые справочные преимущества
- 18. Слабые ссылки на вызов
- 19. Как убедиться, что слабые шифровальные наборы (RC4, AES) действительно отключены?
- 20. Как архивировать слабые ссылки с NSKeyedArchiver?
- 21. Как обнулить слабые ссылки при не-ARC?
- 22. Как заставить компоновщик локализовать слабые символы?
- 23. Как предотвратить слабые пароли пользователей в Woocommerce?
- 24. Отключить слабые шифры Tomcat Embedded
- 25. Поддерживает ли Android слабые символы?
- 26. Слабые ссылки и одноразовые предметы
- 27. UIViewController State Restoration - слабые отношения
- 28. Слабые ссылки и `OutOfMemoryError`s
- 29. Статические/Динамические против Сильные/Слабые
- 30. Слабые сущности и внешние ключи
Очень хороший ответ, спасибо! – Yttrill