Описание тега escape-analysis

Анализ выхода определяет все места, где может быть сохранен указатель, и можно ли доказать, что время жизни указателя ограничено только текущей процедурой и / или потоком.
1 ответ

Функции Variadic, вызывающие ненужные выделения кучи в Go

В настоящее время я работаю над чувствительным к производительности кодом в Go. В какой-то момент у меня особенно тесная внутренняя петля, которая делает три вещи подряд: Получить несколько указателей на данные. В случае редкой ошибки, один или неск…
3 ответа

Java Escape-анализ не работает

Для приведенного ниже кода, я вижу много активности GC. Насколько я понимаю, это подходящий сценарий для EA. Почему EA не эффективна. DummyObject не имеет внутри ничего выделенного. Используемые параметры JVM: -server, -verbosegc. static void anayze…
28 июн '12 в 06:18
3 ответа

Детерминированная сборка мусора в JVM

Интересно, есть ли случаи, когда JVM горячей точки или любые другие JVM могут детерминистически собирать мусор. Мне известен анализ побега, но мне интересно, работает ли он для объектов, выделенных в куче. То, что я имею в виду, в коде C++, такой ка…
02 дек '13 в 13:17
3 ответа

Анализ побега в.NET CLR VM

Есть ли какой-либо escape-анализ, выполняемый компилятором /JIT CLR? Например, в Java кажется, что переменная цикла - объект, размещенный в цикле, который не выходит из цикла, размещается в стеке, а не в куче (см. Анализ Escape в Java). Чтобы уточни…
22 ноя '11 в 05:51
2 ответа

Почему следующий массив помещается в кучу, а не в стек в Java

Я недавно узнал, что объекты могут быть помещены в стек или в кучу, и место их размещения определяется путем анализа побега. ( Объявление нескольких массивов с 64 элементами в 1000 раз быстрее, чем объявление массива из 65 элементов) В следующем при…
15 сен '13 в 12:50
1 ответ

Каково значение вывода "go run -gcflags -m xxx.go"

Попытка проверить, размещена ли локальная переменная в куче или стеке в программе go, и не может быть уверенным в значении какого-либо вывода из go gc. Код variable_heap_stack.go: // variable heap & stack learn, // run with: // go run -gcflags -…
25 июл '18 в 12:20
2 ответа

Статический оптимизатор байт-кода Java (например, Proguard) с анализом escape?

Оптимизация на основе анализа побега является запланированной функцией Proguard. Между тем, существуют ли какие-либо инструменты, такие как proguard, которые уже выполняют оптимизацию, требующую анализа побега?
10 июн '10 в 20:06
1 ответ

Профилирование jvm, где генерируется большая часть мусора и какой у него тип, экранирование от оптимизации

Я знаю, что моя программа вызывает gc в обычных интеллектуалах, но я хотел бы проанализировать только сгенерированный мусор. Я хочу знать, какие классы чаще всего оставляются, и гораздо важнее, где создаются эти экземпляры. Как правило, я хочу оптим…
2 ответа

Что считается "маленьким" объектом в Go относительно распределения стека?

Код: func MaxSmallSize() { a := make([]int64, 8191) b := make([]int64, 8192) _ = a _ = b } Тогда беги go build -gcflags='-m' . 2>&1 проверить детали выделения памяти. Результат: ./mem.go:10: can inline MaxSmallSize ./mem.go:12: make([]int64, …
15 фев '17 в 07:34
1 ответ

Работает ли анализ побега Java для массивов только с одним элементом?

Фон: Когда вы извлекаете методы из длинных частей кода, вы часто сталкиваетесь с проблемой вызова по значению с примитивными переменными. Вы не можете изменить эти примитивные параметры в извлеченном методе, чтобы вызывающая сторона увидела изменени…
18 дек '16 в 23:21
3 ответа

Анализ побега в Java

Насколько я знаю, JVM использует анализ выхода для некоторых оптимизаций производительности, таких как укрупнение блокировки и устранение блокировки. Мне интересно, есть ли возможность для JVM решить, что любой конкретный объект может быть размещен …
21 апр '09 в 07:21
1 ответ

Может ли JVM пропустить создание объектов с коротким сроком службы, чтобы я мог выполнять рефакторинг без ущерба для производительности?

Иногда в ходе алгоритма нам нужно вычислить или просто сохранить несколько значений, которые зависят друг от друга или не имеют никакого смысла отдельно друг от друга. Так же, как (довольно бессмысленный, но важный, простой) пример позволяет найти д…
0 ответов

CLANG/LLVM Анализ выхода для переменных C

Я хотел бы сделать анализ побега, используя Clang. Мой код выполняет синтаксический анализ кода на C и извлечение всех переменных переменных и так далее. Есть ли простой способ узнать, сбежали ли мои локальные переменные? Или я должен делать все вру…
03 авг '12 в 11:10
1 ответ

Использует ли андроид dalvik vm оптимизацию анализа побега?

Любые идеи о побег анализ в Dalvik? Или когда и если планируется добавление? Я считаю, что escape-анализ очень важная функция в языках GC, позволяющая избегать создания объектов при каждом вызове метода, и в настоящее время я предварительно выделяю …
24 июн '12 в 11:28
1 ответ

Распределение стеков Java вручную

Так что я относительно новичок в Java, и просто прочитал эту действительно интересную статью в Википедии об анализе побега. Однако единственный раз, когда упоминается, что используется выделение стека, это когда объект не экранирует вызов метода. Эт…
03 дек '13 в 03:53
3 ответа

Опыт с анализом побега включен на JVM

Я только что попробовал -XX:+DoEscapeAnalysis опция включена на виртуальной машине jdk6-u18 (на солярисе) и имела довольно разочаровывающий опыт. Я запускаю приложение scala, в котором довольно много актеров (20000 из них). Это рецепт для создания м…
01 фев '10 в 20:28
1 ответ

Анализ побега сомнений

Я решил провести небольшой эксперимент с анализом escape (Java 8, 64-битная серверная JVM). Я придумал это действительно глупое "приложение", в котором я создаю множество объектов Address (они состоят из почтового индекса, улицы, страны и отметки вр…
18 окт '15 в 20:41
1 ответ

GO - анализ побега

Во многих языках локальные переменные находятся в стеке вызовов В JavaScript/Python только переменные замыкания находятся в куче, потому что они должны находиться за пределами вызовов функций, они создаются. В GO некоторые типы GO (например, тип сла…
28 янв '17 в 08:08
1 ответ

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

Я пытался понять побег анализ JVM недавно. Я попробовал много комбинаций вариантов JVM согласно этому хорошему ответу. Мой вопрос заключается в том, есть ли какие-либо жесткие ограничения на значения этих параметров? подобно FreqInlineSize, MaxInlin…
21 мар '18 в 09:34
1 ответ

Правильно ли обрабатывает escape-анализ Thread.holdsLock()?

Этот пример работает нормально (печатает true), когда я запускаю его с -XX:+DoEscapeAnalysis -server: final Object lock = new Object(); synchronized (lock) { System.out.println(Thread.holdsLock(lock)); // prints true } С другой стороны, в краткой и …
05 дек '17 в 13:08