PHP: Explode space, кроме пробела в разделителе () [duplicate]

Другое место, где объясняются сообщения сборщика мусора Dalvik, находится в этом видео: Google I / O 2011: Управление памятью для Android Apps

Примерно через 14 минут в презентацию , он разбивает формат сообщения. (BTW, у этого видео есть действительно хорошая информация об утечках памяти отладки)

Грубо говоря, формат [Reason] [Amount Freed], [Heap Statistics], [Статистика внешней памяти], [ Пауза Время]

Причина

Роберт / юку уже дал информацию о значении этих.

Amount Freed

Например освобожден 2125K

Самоочевидный

Статистика кучи

Например. 47% бесплатно 6214K / 11719K

Эти числа отражают условия после запуска GC. «47% свободных» и 6214 тыс. Отражают текущее использование кучи. 11719K представляет общий размер кучи. Из того, что я могу сказать, куча может расти / сокращаться, поэтому вы не обязательно будете иметь OutOfMemoryError, если вы нажмете этот предел.

Статистика внешней памяти

Например external 7142K

Примечание: Это может существовать только в пре-сотовых версиях Android (до 3.0).

Перед Honeycomb растровые изображения выделены вне вашей виртуальной машины (например, Bitmap.createBitmap () выделяет растровое изображение извне и выделяет всего несколько десятков байтов на вашей локальной куче). Другие примеры внешних распределений для java.nio.ByteBuffers.

Pause Time

Если это параллельное событие GC, будет указано два раза. Один из них - для паузы перед GC, один - для паузы, когда GC в основном выполняется. Например. приостановлено 3 мс + 5 мс

Для неконкурентных событий GC есть только одно время паузы, и оно обычно намного больше. Например. приостановлено 87 мс

4
задан Romeo Mihalcea 18 September 2013 в 00:12
поделиться

3 ответа

Разбить по пробелам, за которым следует положительный прогноз, который проверяет, является ли следующий символ скобки (если есть) открытым (или конец ввода):

\s+(?=[^\])}]*([\[({]|$))
2
ответ дан Bohemian 17 August 2018 в 10:31
поделиться
  • 1
    здорово. Спасибо друг – Romeo Mihalcea 18 September 2013 в 00:45
  • 2
    Возможно, вам не хватает закрывающей круглой скобки. \s+( <-- Unbalanced '(' ?=[^\])}]*([\[({]|$) – sln 18 September 2013 в 02:14
  • 3
    @sln совершенно так. Исправлена. Спасибо. (Я набрал его на моем iPhone - может быть трудно подобрать такие вещи) – Bohemian♦ 18 September 2013 в 02:45
  • 4
    @Bohemian, на самом деле это не работало для меня: в нем отсутствуют пробелы, которые не указаны в скобках – François Romain 25 April 2016 в 23:11
  • 5
    @Natt Я думаю, что этот ответ будет делать то, что вы хотите, если изменить его, чтобы использовать квадратные скобки – Bohemian♦ 24 January 2018 в 17:12

, чтобы соответствовать пространству вне (), {} и [] использовать этот шаблон (\s)(?:(?=(?:(?![\]\)}]).)*[\[\({])|(?!.*[\]\)}])) Демо

0
ответ дан alpha bravo 17 August 2018 в 10:31
поделиться

Не расщепляется, но выполняется сопоставление и обрезка. Пример в JavaScript, вы можете попробовать его в консоли браузера:

var a = '[apples carrots] (car plane train) {food water} foo bar';
a.match(/[a-zA-Z0-9\[\]\(\){}]+/g).map(function (s) { return s.replace(/[\[\]\(\)\{\}]/, ''); });
["apples", "carrots", "car", "plane", "train", "food", "water", "foo", "bar"]

Альтернативно:

a.split(/\s+(?![^\[]*\]|[^(]*\)|[^\{]*})/)

Производит:

["[apples carrots]", "(car plane train)", "{food water}", "foo", "bar"]
3
ответ дан uKolka 17 August 2018 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: