Есть ли какие-либо жесткие ограничения на флаги 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
и т.п. - Я сомневаюсь, что вы найдете много документации по этим вещам, кроме исходного кода.