Есть ли что-нибудь в строках интеллектуальных указателей C++ в Java?Есть ли в Java «умные указатели»?
ответ
Все указатели Java (ссылки) являются интеллектуальными указателями.
Java работает в управляемой среде. Это означает, что Java использует сборщик мусора для очистки переменных, которые больше не ссылаются.
Ссылки на Java немного отличаются от ссылок на указатели. Java абстрагирует все значения указателя и математику, которые вы видите на C++. Таким образом, в любое время, когда вы создаете новый объект и храните его в переменной, вы храните его в Java-версии «умного указателя».
Возможно, вы захотите подробно рассказать о том, какая разница между ссылками Java и умными указателями на C++. – Pacerier
умные указатели дают разработчику контроль, когда освобождаются и деструктор вызывается. Для программирования с низкой задержкой они устраняют «дрожания» во время ответа, которые являются общими для Java. auto pointers делают это тоже, и один лучше - путем помещения фактического объекта в стек, а не в любую часть кучи, они обеспечивают лучшую локальность. Обе функции, о которых я сожалею, недоступны в Java. –
Нет, в Java нет указателей на какой-либо класс. В общем, вам не нужны умные указатели в любом случае, потому что у вас уже есть сборщик мусора на месте, ссылаясь на автоматическое управление распределением/выпуском памяти.
@ pablo-tx .. так только сборщики мусора помогают в управлении памятью? – garima
Это не совсем так: объект в java ** является ** указателем на реальный ресурс. –
@garima: не уверен, что я понимаю вас, но ДА: сборщики мусора помогают в управлении памятью. –
Да и нет. Нет, в Java нет ничего похожего на объект-указатель. Да в том смысле, что каждый объект является «умным указателем», что означает, что он подвергается сбору мусора и заботится о его собственной жизни, если можно так выразиться.
Я слышал только о умных указателях в контексте управления памятью. Поскольку управление памятью лежит в основе платформы Java, в этом нет необходимости.
Ближайшие совпадения, которые приходят на ум, - это java.lang.ref.WeakReference и java.lang.ref.SoftReference, поскольку они позволяют в некоторой степени настроить сборку мусора.
- 1. Есть ли общие умные указатели?
- 2. Умные умные указатели
- 3. Умные указатели в функциях
- 4. Умные указатели в Qt
- 5. C++ - указатели и «умные указатели»
- 6. Умные указатели с PythonQt
- 7. Косвенные умные указатели многоуровневые
- 8. Умные указатели и деструктор
- 9. Умные указатели и dynamic_cast
- 10. умные указатели вместо указателей
- 11. Есть ли указатели в java?
- 12. умные указатели в многопоточном envrionment
- 13. Умные указатели и объекты стека
- 14. Как следует использовать умные указатели?
- 15. Умные указатели как ключ карты
- 16. умные указатели и исключения конструктора
- 17. Умные указатели и производные классы
- 18. Умные указатели с addrinfo struct
- 19. Qt умные указатели в функциональных параметрах
- 20. Умные указатели с «этим» в C++
- 21. грубые и умные указатели смешанные функции перегрузки
- 22. Умные указатели - случаи, когда они не могут заменить необработанные указатели
- 23. умные указатели и итерация с авто
- 24. C++ 11 умные указатели и полиморфизм
- 25. Умные указатели/безопасное управление памятью для C?
- 26. Умные указатели, форвардная декларация и C4150
- 27. Умные указатели на C++ - интерфейс C#
- 28. Умные указатели при работе с конструкторами
- 29. Есть ли временные указатели?
- 30. Есть ли указатели в javascript?
Я думаю, вы можете что-то ввести в заблуждение. Умные указатели представляют собой оболочку вокруг исходных указателей, которые обеспечивают, например, проверка ссылок или границ. Java не имеет исходных указателей и имеет встроенный GC. – delnan
См. Объяснение Википедии для интеллектуальных указателей для получения дополнительной информации: http://en.wikipedia.org/wiki/Smart_pointer –
Сама реализация языка (JVM) берет на себя большинство (если не все), которые обычно обрабатываются интеллектуальными указателями на C++. –