Есть ли какие-либо жесткие ограничения на флаги JVM для управления анализом escape?

Я пытался понять побег анализ JVM недавно. Я попробовал много комбинаций вариантов JVM согласно этому хорошему ответу. Мой вопрос заключается в том, есть ли какие-либо жесткие ограничения на значения этих параметров? подобно FreqInlineSize, MaxInlineLevel, JVM не воспримет это всерьез, когда я установлю параметры на какую-то нелепую ценность, такую ​​как -XX:FreqInlineSize=65535 будет ли он? На самом деле, я попробовал это. Но JVM не жаловался на это. Так что я действительно не могу сказать.

Если есть какой-то жесткий предел, что бы это было? Где я могу найти документы, которые описывают такие вещи?


Я пытался найти способ заставить мои сообщения Protobuf и объекты компоновщика размещаться в стеке, а не в куче. Иногда это работает. Но когда количество полей объекта сообщения растет, оно перестает работать. Я много искал в Интернете, но с небольшими результатами из-за моего ограниченного понимания по этому вопросу. Так вот почему я спрашиваю.


Версия JVM: 64-разрядная серверная виртуальная машина Java HotSpot(TM) (сборка 25.131-b11, смешанный режим)

1 ответ

Решение
  • Опции, о которых вы говорите, контролируют встраивание, а не анализ выхода.
  • Нет жестких ограничений на эти значения, или, точнее, INT_MAX,
  • На практике, однако, встраивание и другие оптимизации ограничены другими ограничениями, такими как NodeCountInliningCutoff (не настраивается), MaxNodeLimit, NodeLimitFudgeFactor и т.п.
  • Я сомневаюсь, что вы найдете много документации по этим вещам, кроме исходного кода.
Другие вопросы по тегам