Нет, не должно.
То, что классы загружаются в кучу, здесь ничего не значит. так как каждый загрузчик классов поддерживает свой список загруженных классов.
Однако, загрузчики классов также организованы в дерево, и они должны попросить своих родительских загрузчиков классов сначала попытаться загрузить класс, как описано в javadoc класса ClassLoader
.
Класс ClassLoader использует модель делегирования для поиска классов и ресурсов. Каждый экземпляр ClassLoader имеет связанный родительский загрузчик классов. При запросе на поиск класса или ресурса экземпляр ClassLoader делегирует поиск класса или ресурса своему загрузчику родительского класса, прежде чем пытаться найти сам класс или ресурс.
Однако веб-серверы обычно не следуют этой модели делегирования, чтобы избежать использования библиотек, используемых самим веб-сервером, веб-приложениями. (Такое поведение иногда настраивается, но зависит от используемого веб-сервера.)
Таким образом, на практике каждое веб-приложение должно иметь свое отдельное пространство классов, независимое от всех других веб-приложений, поэтому они могут без проблем использовать две разные версии одной и той же библиотеки.
Другим важным уроком является то, что один и тот же файл классов, загружаемый двумя разными загрузчиками классов, фактически будет двумя отдельными классами в куче, и объекты одного класса не будут совместимы с другим классом.