Як уникнути попередження "Спільний доступ підтримується лише для класів завантажувача, оскільки додано шлях до класу bootstrap" під час налагодження з Java 11?


83

Нещодавно я перейшов на Java 11 і почав налагоджувати свій додаток і побачив таке повідомлення:

Попередження OpenJDK 64-бітної сервера VM: Спільний доступ підтримується лише для класів завантажувача, оскільки додано шлях до класу bootstrap

Знайшов лише цей коміт і квиток , але це мені не багато говорить.

Чи потрібно мені про це турбуватися?


5
Ви намагаєтесь одночасно використовувати -Xbootclasspath / a та CDS (або AppCDS). Чи можете ви запустити -Xshare: off, щоб вимкнути CDS?
Алан Бейтман,

1
Тільки здогадка (оскільки я бачив щось подібне), ви використовуєте IDE, яка робить те, що вказав Алан, навіть не знаючи про це? Це IntelliJ?
Наман,

1
Так, це IntelliJ
Дмитро Думанський

13

4
Це трапилося зі мною відразу після того, як я перейшов на java 12, я запустив -Xshare: off, і він теж працював нормально, але що саме це робить, чи може це запобігти чомусь, що мені знадобиться в майбутньому, або може трапитися щось погане?
zarez

Відповіді:


111

У мене також виникла ця проблема після встановлення jdk-12.0.1_windows-x64_bin.zipпри спробі використовувати налагоджувач з IntelliJ IDEA. Я отримав повідомлення про помилку ( попередження 64-бітної сервера Java HotSpot (TM) 64-бітного сервера: Спільне використання підтримується лише для класів завантажувача, оскільки додано шлях до класу bootstrap ). Я також знайшов, що заходжу в Налаштування та пошук асинхронізації та знімаю галочку з пункту Інструментальний агент. Працював у мене! Налаштування ASYNC


10
Перш ніж вимкнути цю функцію, прочитайте про функцію Async Stack Traces, щоб побачити, чи вона не може бути для вас корисною: jetbrains.com/help/idea/async-stacktraces.html
Самуель

1
У двох словах: Коли батьківський потік запускає дочірній потік або процес (певні «точки захоплення»), робиться дамп потоку. Коли ви вриваєте дочірній потік, частина його стека буде з батьківського потоку.
Марк Єронімус,

15

У мене виникла ця проблема після встановлення Java12 при спробі використовувати налагоджувач з Intellij Idea. Рішення, яке я знайшов, було зайти в Налаштування та пошук асинхронізації та зняти прапорець з пункту Інструментальний агент.


7

Ви можете проігнорувати це попередження. Це просто означає, що спільний доступ до даних класу вимкнено для класів, не завантажених завантажувачем класу bootstrap.

Від Покращення часу запуску […] за допомогою спільного використання даних класу додатків :

JVM завантажує деякі класи JDK за допомогою завантажувача класів bootstrap, а решта - завантажувачем системних класів, але включає всі їх у свій архів за замовчуванням. Коли IntelliJ виконує ваш проект, він повідомляє JVM завантажити деякий код за допомогою завантажувача класу bootstrap, додавши до цього шляху до класу (друга частина повідомлення). Це означає, що частина архіву, що містить класи, завантажені завантажувачем системних класів, потенційно недійсна, і тому JVM частково деактивує спільний доступ (перша частина повідомлення).

Ви можете повністю вимкнути обмін даними класу -Xshare:off, але втратите певну продуктивність.


6

Для мене проблема виникла лише тоді, коли я працював у Docker та коли використовував агент командного рядка Java, такий як агент APD DataDog ( -javaagent:/dd-java-agent.jar). Коли я працював у своєму середовищі виконання JDK11 (без агента), я не отримував попереджень.


3

Для Intellij IDE -> Налаштування / Налаштування діалогове вікно (Ctrl + Alt + S), перейдіть до Build | Виконання | Розгортання | Налагоджувач | Async -> зніміть прапорець з інструментального агента


1

Якщо це не критично, ви можете змінити свою версію jdk. Я змінився з jdk14 на jdk 11. Сподіваюся, це буде працювати для вас.



0

Сьогодні я знайшов те саме питання, що і ви. Ситуація: налагодження без встановлення точки зупинку Рішення: встановіть принаймні одну точку зупинки, перш ніж натиснути кнопку налагодження!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.