0

Option кнопка

На клавиатуре имеется большое количество кнопок, которые не используются при наборе текста. Они нужны для выполнения некоторых комбинаций и задач. Одна из таких – «Option», но многие даже не знают, как ее найти. Для многих задач будет полезно узнать, где кнопка Option на MacBook и зачем она нужна.

Содержание

Место расположения

Найти кнопку «Option» достаточно просто. Она находится в левой нижней части клавиатуры. Чтобы найти её, нужно посмотреть на пробел, и перевести взгляд влево. Сразу после пробела будет клавиша ALT. Это и есть кнопка «Option». После неё будет CTRL и Command.

Функции клавиши

Использовать кнопку «Option» полезно для некоторых комбинаций.

Популярной комбинацией является Shift + ALT. Она используется при переключении языка. Примечательно, что для получения доступа к такой возможности изменения раскладки, нужно поставить специальный русский язык, с пометкой ПК. Это можно сделать в настройках «Языки и регионы».

Ещё кнопка ALT может потребоваться для вызова диспетчера задач. Так называют утилиту, показывающую информацию о запущенных программах и процессах. При помощи диспетчера задач, пользователь может отключить системные процессы, или перезапустить их. Для вызова диспетчера нажмите CTRL + ALT + DELETE.

Одна из главных особенностей Mac OS X Lion — это Mission Control. Фактически Mission Control представляет собой новый способ работы с окнами и приложениями. Раньше мы пользовались Exposé, Dashboard, и виртуальными рабочими столами, теперь все это объединено в рамках одного приложения. Говоря проще, Mission Control позволяет мгновенно увидеть все запущенные программы, открытые окна и документы.
Как работать с Mission Control

Запустить Mission Control можно одним из нескольких способов:

— Нажав на соответствующий значок программы в Доке
— Нажав на клавиатуре кнопку F3 (которая раньше отвечала за Exposé)
— Жестом — надо провести тремя пальцами снизу вверх (можно настроить, чтобы четырьмя)
— Настроив углы на трекпаде.
— Если есть Magic Mouse, то нажмите дважды по поверхности мышки.

Запустив Mission Control, в верхней части экрана вы увидите Dashboard, который содержит все ваши виджеты, виртуальные рабочие столы (spaces), приложения, запущенные в полноэкранном режиме. Ниже будут показаны программы с открытыми окнами.


Mission Control объединил Exposé, Spaces, Dashboard

Вы, кстати, можете вызвать отдельно Exposé для приложения. Допустим, у вас открыт TextEdit. Если провести четырьмя пальцами сверху вниз, то вы увидите окна, открытые в TextEdit, а также список документов, которые редактировали ранее:


Режим Application Window показывает не только открытые окна, но и список документов, которые были отредактированы ранее

Виртуальные рабочие столы появились в OS X Leopard. На сегодняшний день единственная популярная ОС, которая не поддерживает их нативно, — это Windows. Часто на отдельный рабочий стол пользователи OS X выносят Windows (которая запущена в виртуальной машине). Другой распространенный кейс — это разделение задач по рабочим столам. Например, в одном спейсе у вас собрана «развлекаловка» (Twitter, какие-нибудь игры, IM-клиенты), на другом — непосредственно работа (TextMate, Kaleidoscope, FTP), на третьем — учеба (Preview, Dictionary.app, TextEdit).

Чтобы добавить новый рабочий стол, запустите Mission Control, наведите курсор в верхний правый угол. Когда появится фрагмент нового стола, щелкните по нему. Теперь у вас есть новый рабочий стол. Остается добавить туда приложения. Сделать это можно несколькими способами. Во-первых, в Mission Control вы можете перетащить любое приложение на новый рабочий стол. Второй способ интересней. Перейдите на только что созданный рабочий стол, запустите приложение, которое хотели бы закрепить за ним. Затем в доке вызовите у этого приложения контекстное меню и выберите пункт «Параметры → назначить этот рабочий стол».

Переключаться между созданными рабочими столами можно через Mission Control или используя жесты: четырьмя пальцами провести слева направо или справа налево.

Чтобы удалить ненужный рабочий стол, запустите Mission Control, наведите курсор на него, появится крестик. Щелкните по этому крестику.

Некоторые проблемы

Сказать, что новый Mission Control идеален, нельзя. Очень продвинутые и требовательные пользователи, которые прежде имели привычку заводить 5-9 рабочих столов, находят новый способ работы с ними неудобным. Есть жалобы на то, что Mission Control не показывает свернутые окна (минимизированные). Рабочим столам нельзя давать имена. Они представлены как «Рабочий стол 1», «Рабочий стол 2», «Рабочий стол 3» и т.д. Это в определенной степени усложняет навигацию между ними.

Несколько советов

1. Чтобы проще было распознавать рабочие столы в Mission Control, установите для каждого из них свои обои. Для этого надо запустить Mission Control, перейти на один из рабочих столов, кликнув по нему. Затем запустите утилиту Системные настройки, перейдите в раздел «Рабочий стол и заставка». Там у вас будет возможность сменить обои. Эту процедуру придется повторить для каждого из рабочих столов.


У каждого рабочего стола могут быть свои обои.

2. Чтобы быстро переключаться между рабочими столами, используйте горячие клавиши. Настроить их можно здесь: Системные настройки → Клавиатура → Сочетания клавиш.

3. Если нужно посмотреть открытые окна последовательно одно за другим, не покидая при этом Mission Control, используйте одну горячую клавишу: ` (на клавиатуре моего Макбука она расположена под кнопкой esc).

4. Если вы не пользуетесь виджетами, то Dashboard можно убрать из Mission Control. Для этого посетите: Системные настройки → Mission Control и уберите галку «Показать Dashboard как простратство».

Вырезка и вставка

В OS X нельзя вырезать файлы. Перемещать их можно лишь перетаскиванием либо копированием-вставкой и последующим удалением исходников. Но если очень хочется, то можно.

Для этого мы просто копируем нужный файл, но вставляем его в новую папку не как обычно, с помощью сочетания клавиш ⌘ + V (Command + V), а ещё и удерживая при этом клавишу ⌥ (Option). Аналогичным образом подобный трюк работает и для строки меню: при удержании клавиши ⌥ (Option) пункт «Вставить объект» сменится на «Переместить объект», что нам и нужно.

Удаление файлов без перемещения в корзину

По умолчанию все файлы после удаления попадают в корзину, откуда их можно восстановить или удалить навсегда. Чтобы не приходилось потом ещё дополнительно очищать корзину, файлы можно удалять сразу.

Для этого вместо сочетания ⌘ + ⌫ (Command + Delete) следует использовать ⌥ + ⌘ + ⌫ (Option + Command + Delete). Через строку меню то же самое можно сделать, удерживая ⌥ (Option) и выбрав «Файл» — «Удалить немедленно».

Очистка истории Safari

История браузера — это деликатная штука, которую время от времени приходится чистить хотя бы для увеличения производительности. Однако Safari вместе с историей удаляет также cookie и настройки посещённых сайтов, что, согласитесь, не всегда нужно.

И опять нас спасает волшебная клавиша Option. Удерживая её, открываем меню «История» и выбираем изменившийся пункт «Очистить историю, но сохранить данные сайтов». Готово!

Единственной программой OS X, которую нельзя завершить, является Finder. Однако ситуации, когда его необходимо перезапустить, иногда всё же возникают (например, для вступления в силу каких-нибудь изменений).

Самый простой способ сделать это — вызвать контекстное меню по правому клику на иконке Finder в доке, но, как вы уже, наверное, догадались, не просто так, а удерживая клавишу ⌥ (Option).

Копирование пути к файлу или папке

Хотите вставить прямой путь к файлу в каком-нибудь приложении? Да нет проблем!

Перейдите в папку с нужным файлом (или другой папкой) и откройте меню по правому клику. Теперь нажмите ⌥ (Option), и, как по волшебству, появится новый пункт — «Скопировать путь до…».

Быстрый переход в «Библиотеку»

«Библиотека» (Libraries) — это папка, содержащая различные пользовательские данные и настройки. В неё можно попасть через Finder, но гораздо проще и быстрее это сделать с помощью нашей любимой клавиши ⌥ (Option).

В Finder откройте меню «Переход» и, удерживая ⌥ (Option), выберите пункт «Библиотека».

Включение режима «Не беспокоить»

Чтобы сосредоточиться на работе, первым делом нужно отключить уведомления, но для этого не обязательно смахивать шторку центра уведомлений и щёлкать соответствующим тумблером. Не по-лайфхакерски это.

Лучше просто кликнуть по иконке центра уведомлений в строке меню, удерживая сами знаете какую клавишу. 🙂

Изменения приложения по умолчанию для определённых файлов

OS X умеет открывать все популярные типы файлов в стандартных приложениях. Если у вас установлено несколько приложений для открытия тех или иных типов файлов, то для выбора их в качестве программ по умолчанию вовсе не нужно блуждать по настройкам и искать там соответствующий пункт. Есть более удобный способ.

Нужно просто открыть Finder и, сделав правый клик на файле, нажать ⌥ (Option). После этого пункт «Открыть в программе» изменится на «Всегда открывать в программе», и нам останется лишь выбрать нужное приложение из выпадающего списка. То же самое можно сделать и через пункт «Файл» в строке меню.

Сохранение файла

Во время редактирования файлов OS X очень бережно относится к ним и все изменения предлагает записывать в дубликат. Но если вам нужно просто сохранить прогресс в другом файле, можно воспользоваться «скрытой» командой.

В меню «Файл» нужно нажать клавишу ⌥ (Option) и выбрать появившийся пункт «Сохранить как». Тем, кто предпочитает шорткаты, следует запомнить сочетание ⌥ + ⇧ + ⌘ + S (Option + Shift + Command + S).

Точная регулировка яркости, подсветки клавиш и громкости

Шкала регулировки яркости дисплея, громкости и подсветки клавиш имеет 16 градаций. Иногда этого достаточно, а иногда нет.

Уменьшить шаг изменения можно, если к функциональным клавишам F1 — F2, F5 — F6, F10 — F11 добавить сочетание ⇧ + ⌥ (Shift + Option). В этом случае каждое деление шкалы будет дополнительно разбиваться ещё на четыре части.

Ввод спецсимволов

Спецсимволы можно вводить из панели «Эмодзи и символы», которая спрятана в меню «Клавиатура». Там собрана полная таблица символов, разбитая на категории. Если вас такой способ не прельщает, есть другой.

При помощи клавиши ⌥ (Option) можно быстро вводить различные спецсимволы прямо с клавиатуры. Например, сочетание ⇧ + ⌥ + K (Shift + Option + K) вводит символ , который вы всё время видите в строке меню. Таким же образом можно вводить значки валют, арифметических действий и любые другие. Пока не запомните расположение символов, можно подсматривать, включив отображение экранной клавиатуры (клик по иконке источника ввода, затем «Показать панель «Клавиатура»).

Отображение всех подпапок в Finder

Просматривать файлы в режиме списка в Finder довольно удобно. Единственное, что раздражает, это необходимость открывать вручную каждую вложенную папку. Но и эту неприятность можно побороть, если не забывать о клавише Option.

Всего-то нужно нажать стрелочку основной папки, удерживая ⌥ (Option), и всё дерево папок предстанет перед вами.

Пропуск дублирующихся файлов при копировании

Когда вы копируете в папку файлы, которые там уже присутствуют, появляется диалоговое окно, предлагающее оставить оба файла, заменить или остановить процесс копирования.

На самом деле есть ещё одна скрытая опция: возможность пропустить копирование файла-дубликата, и появится она, если в диалоговом окне нажать клавишу Option.

Отмена выделения объектов

Вам наверняка знакомо сочетание клавиш ⌘ + A (Command + А), которое работает во всех приложениях и позволяет выбрать все элементы или содержимое. В Finder есть противоположность этому действию.

Скрытие окон и принудительное завершение работы приложений

В отличие от Windows, в OS X у приложений может быть несколько окон, и если у вас возникнет необходимость отобразить какое-либо из них, скрыв остальные, то это можно легко сделать с помощью иконки в доке. Ну и, конечно же, клавиши Option. 🙂

Сделав правый клик на иконке приложения, нужно нажать ⌥ (Option) и выбрать «Скрыть остальные». Там же появится и пункт «Завершить принудительно», который позволит закрыть зависшее приложение.

Открытие настроек различных функций

Опции дисплея, звука, клавиатуры и Mission Control можно изменить из стандартных настроек, а можно и более простым способом.

Отображение подробной информации о сети

Если нажать на иконку Wi-Fi в строке меню, то откроется список доступных сетей и несколько опций настроек. Однако здесь же можно просмотреть детальную информацию об активной сети Wi-Fi, включая скорость подключения, IP- и Mac-адрес и многое другое.

Вы уже наверняка поняли, что нужно сделать для этого, но на всякий случай скажу: надо нажать на иконку Wi-Fi, удерживая клавишу ⌥ (Option).

Переход в режим слайд-шоу в Quick Look

Функция Quick Look, позволяющая просматривать файлы нажатием пробела, одна из моих любимых фич Finder. Казалось бы, тут уже нечего улучшать, но нет, вездесущая клавиша Option отметилась и здесь.

Я говорю о режиме слайд-шоу, для перехода в который нужно развернуть окно предпросмотра на весь экран или запускать его через контекстное меню. Так вот: если вам понадобится быстро просмотреть несколько изображений в режиме слайд-шоу, просто выделите их в Finder и нажмите не просто пробел, а ⌥ + Пробел (Option + Пробел).

Открытие настроек Dropbox

Клик по иконке Dropbox в строке меню отображает последние файлы. Для того же, чтобы попасть в настройки, нужно дополнительно нажать во всплывающем окошке на шестерёнку.

Если лишние телодвижения не входят в ваши планы, то для открытия настроек жмите на иконку в строке меню, удерживая ⌥ (Option), и всё будет намного быстрее.

Пропуск диалогов подтверждения

Когда вы перезагружаете свой Mac, система заботливо спрашивает вас, нужно ли открывать все запущенные приложения после входа. Без сомнения, это полезная фишка, но иногда она раздражает.

Чтобы избежать диалогов подтверждения ваших действий, всего то и нужно, что удерживать клавишу ⌥ (Option) при нажатии на кнопку «Перезагрузить».

Бонус

Надеемся, после прочтения этой статьи вы будете использовать клавишу Option гораздо чаще. Если её расположение вам покажется неудобным, есть хорошие новости: полезную клавишу Option можно переназначить на практически бесполезную Caps Lock. Она и размерами больше, и расположена более удобно.

Тут никаких секретов нет. Совершенно. Всё делается стандартными средствами через настройки клавиатуры. Нужная нам опция находится на вкладке «Клавиатура», где следует нажать кнопку «Клавиши модификации» и указать в выпадающем списке для клавиши Caps Lock замену на клавишу Option.

«Нам нравится следить за блогом Михаила Воронцова и узнавать его точку зрения на проблемы, связанные с производительностью Java. Нас несколько раз спрашивали, чем анализ ошибок в Takipi в Java отличается от Java Mission Control и Java Flight Recorder. Таким образом, хотя различия между инструментами довольно велики (в основном, JMC — это в основном настольное приложение, в то время как Takipi был специально разработан для крупномасштабных производственных сред), мы посчитали, что это будет хорошей возможностью добавить исчерпывающий обзор JMC.

Помимо Java Mission Control, являющегося настольным приложением, основное отличие состоит в том, что с Takipi вы получаете постоянный анализ ошибок вплоть до значений переменных и фактического кода, который вызывал каждую ошибку. Поэтому, где JMC дает большую ценность в профилировании, но останавливается на уровне трассировки стека, Takipi углубляется в реальный код, чтобы помочь вам воспроизводить и устранять производственные ошибки.

Другое отличие заключается в работе с распределенными системами: JMC работает на отдельных машинах, а на панели инструментов Takipi отображаются несколько JVM на разных машинах. Так что, если вы хотите контролировать крупномасштабные производственные системы, попробуйте Takipi. Однако, если вы ищете отличный инструмент для профилирования рабочего стола, JMC может быть вашим лучшим вариантом «.

— Алексей Житницкий, Такипи

Михаил — главный блогер на java-performance.info. Он делает свои Java-приложения на 5% быстрее и компактнее снова и снова на работе. Михаил любит проводить время в саду и играть с сыном в одном из пригородов Сиднея (Австралия).

1. Введение
2. Java Mission Control
3. Лицензия JMC
4. Мониторинг процессов в реальном времени
— 4.1 Триггеры событий
— 4.2 Вкладка «Память»
— 4.3 Вкладка Темы
5. Использование Java Flight Recorder
— 5.1 Как бегать
— 5.2 Начальный экран
— 5.3 Вкладка «Память»
— 5.4 Вкладка «Выделения»
— — 5.4.1 По классу
— — 5.4.2 по теме
— — 5.4.3 Профиль распределения
— 5.5 Кодовая вкладка
— — 5.5.1 Горячие методы
— — 5.5.2 Вкладка «Исключения»
— — 5.5.3 Вкладка Темы
— — 5.5.4 Вкладка ввода / вывода
6. Экосистема Java Production Tooling

1. Введение

В этой статье описывается Java Mission Control — инструмент JDK GUI, доступный начиная с Java 7u40, вместе с Java Flight Recorder.

2. Java Mission Control

Oracle Java Mission Control — это инструмент, доступный в Oracle JDK начиная с Java 7u40. Этот инструмент происходит из JRockit JVM, где он был доступен в течение многих лет. JRockit и его версия JMC были хорошо описаны в Oracle JRockit: Полное руководство, написанное двумя старшими разработчиками JRockit (также посетите блог Маркуса Хирта — первое место, где вы должны искать любые новости JMC).

Oracle JMC можно использовать для двух основных целей:

  • Мониторинг состояния нескольких запущенных Oracle JVM
  • Анализ файла дампа Java Flight Recorder

3. Лицензия JMC

Текущая лицензия JMC (см. «Дополнительные условия лицензии» ) позволяет вам свободно использовать JMC для разработки, но она требует приобретения коммерческой лицензии, если вы хотите использовать ее в производстве.

4. Мониторинг процессов в реальном времени

Вы можете присоединиться к JVM, щелкнув по нему правой кнопкой мыши на вкладке JVM Browser главного окна и выбрав пункт меню «Start JMX Console». Вы увидите следующий экран. Здесь нет ничего необычного, просто обратите внимание на кнопки «+», которые позволяют добавить дополнительные счетчики на этот экран.

4.1 Триггеры событий

Триггеры позволяют запускать различные действия в ответ на превышение определенных счетчиков JMX и (необязательно) превышение порогового значения в течение определенного периода времени. Например, вы можете запустить запись JFR в случае достаточно высокой загрузки процессора, чтобы понять, какой компонент его вызывает (и вы не ограничены одной записью!).

Обратите внимание, что триггеры работают на любом счетчике JMX (вы видите кнопку «Добавить…»?) — вы можете установить больше триггеров, чем доступно в стандартном дистрибутиве, и экспортировать настройки на диск. Вы даже можете работать со своими счетчиками JMX своего приложения.

Перейдите на вкладку «Действие» в окне «Сведения о правиле» — здесь вы можете указать, какое действие вы хотите выполнить в случае события.

Обратите внимание, что вам нужно запустить приложение как минимум в Java 7 update 40, если вы хотите правильно использовать JFR — я не смог записать какие-либо события из JRE до Java7u40 (возможно, это была ошибка или несовместимость между некоторыми версиями JRE…) ,

4.2 Вкладка «Память»

Следующая вкладка «Память» предоставит вам сводную информацию о куче вашего приложения и сборке мусора. Обратите внимание, что вы можете запустить полный сборщик мусора и запросить дамп кучи с этой страницы (выделено на снимке экрана). Но, по сути, эта страница — просто приятный интерфейс с функциональностью, доступной из других источников.

4.3 Вкладка Темы

Эта вкладка позволяет вам видеть список запущенных потоков в вашем приложении с их текущими дампами стека (обновляется раз в секунду). Это также позволяет увидеть:

  • Состояние потока — работает или заблокирован / ждет
  • Имя замка
  • Если поток заблокирован
  • Сколько раз поток был заблокирован
  • Использование процессора в потоке!
  • Объем памяти, выделенный данному потоку с момента его запуска

Помните, что вам нужно включить профилирование процессора, обнаружение взаимоблокировок и отслеживание выделения памяти, чтобы получить эту информацию в режиме реального времени:

5. Использование Java Flight Recorder

Java Flight Recorder (мы будем называть его JFR в оставшейся части этой статьи) является функцией JMC. С точки зрения пользователя, вы запускаете JFR с фиксированным временем записи / максимальным размером файла записи / максимальной длиной записи (ваше приложение может закончить до этого) и ждете, пока запись не будет завершена. После этого вы анализируете это в JMC.

5.1 Как запустить JFR

Вам нужно добавить 2 следующих параметра в JVM, к которой вы хотите подключиться:

1 -XX:+UnlockCommercialFeatures -XX:+FlightRecorder

Далее, если вы хотите получить что-нибудь полезное от JFR, вам нужно подключиться к Java 7u40 или новее. В документации утверждается, что вы можете подключиться к любой JVM из Java 7u4, но я не смог получить никакой полезной информации от этих JVM.
Третье, что нужно иметь в виду, это то, что по умолчанию JVM позволяет выполнять трассировку стека только в безопасных точках. В результате в некоторых ситуациях вы можете получить неверную информацию о трассировке стека. Документация JFR говорит вам, чтобы вы установили еще 2 параметра, если вы хотите более точные трассировки стека (вы не сможете установить эти параметры на работающей JVM):

1 -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints

Наконец, если вам нужно как можно больше файлового ввода-вывода, исключений Java и информации о профилировании процессора, убедитесь, что вы выбрали выбранные параметры и их пороговые значения установлены на «1 мс».

5.2 Начальный экран JFR

Начальный экран записи JFR содержит графики использования процессора и кучи за периоды записи. Рассматривайте это просто как обзор вашего процесса. Единственное, что вы должны заметить на этом (и на других экранах JFR), — это возможность выбрать временной диапазон для анализа на любом графике. Установите флажок «Синхронизировать выбор», чтобы сохранить одинаковый временной диапазон в каждом окне — он позволит вам просматривать события, происходящие только в этом диапазоне.

На этом экране есть еще одна интересная функция: вкладка «Информация о JVM» внизу содержит значения всех параметров JVM, установленных в профилированной JVM. Вы можете получить их с помощью опции -XX: + PrintFlagsFinal JVM, но получить их удаленно через пользовательский интерфейс удобнее:

5.3 Вкладка «Память устройства записи полета Java»

Вкладка памяти предоставляет вам информацию о:

  • Использование оперативной памяти и кучи Java (вы можете легко догадаться, произошла ли во время записи перестановка или чрезмерный сбор данных).
  • Сборки мусора — когда, почему, как долго и сколько места было убрано.
  • Распределение памяти — внутри / снаружи TLAB, по трассе класса / потока / стека.
  • Снимок кучи — количество / объем памяти, занимаемой именем класса

По сути, эта вкладка позволит вам проверить скорость выделения памяти в вашем приложении, степень давления, которое он оказывает на GC, и какие пути кода ответственны за неожиданно высокие скорости выделения. У JFR также есть своя особая особенность — она ​​позволяет отслеживать TLAB и выделение глобальной кучи отдельно (распределения TLAB намного быстрее, потому что они не требуют какой-либо синхронизации).

В целом ваше приложение будет работать быстрее, если:

  • Распределяет меньше объектов (по количеству и объему выделенной оперативной памяти)
  • У вас меньше старых (полных) сборщиков мусора, потому что они медленнее и требуют остановки мира (по крайней мере, на некоторое время)
  • Вы минимизировали размещение объектов не в TLAB

Давайте посмотрим, как вы можете контролировать эту информацию. Вкладка «Обзор» показывает общую информацию о потреблении / распределении памяти / сборке мусора.

Здесь вы можете увидеть, как далеко «Committed Heap» от «Reserved Heap». Он показывает, сколько у вас маржи в случае всплесков ввода. Синяя линия («Используемая куча») показывает, сколько данных просачивается / остается в старом поколении: если ваш шаблон пилы растет с каждым шагом — ваше старое поколение растет. Самая низкая точка каждого шага приблизительно показывает объем данных в старом поколении (некоторые из них могут подходить для сбора мусора). Шаблон на скриншоте говорит о том, что приложение выделяет только недолговечные объекты, которые собирает GC молодого поколения (это может быть некоторая обработка без сохранения состояния).

Вы также можете проверить поле «Скорость выделения для TLAB» — оно показывает, сколько памяти выделяется в секунду (есть еще один счетчик, называемый «Уровень выделения для объектов», но в целом он должен быть довольно низким). 126 Мбит / с (в примере) — это довольно средняя скорость пакетной обработки (сравните ее со скоростью чтения с жесткого диска), но довольно высокая для большинства интерактивных приложений. Вы можете использовать этот номер в качестве индикатора для общей оптимизации размещения объектов.

Три следующих вкладки: «Сборки мусора», «GC Times» и «Конфигурация GC» довольно очевидны и могут служить источником информации о причинах GC и самых длительных паузах, вызванных GC (которые влияют на задержку вашего приложения).

5.4 Вкладка «Распределение записей в Java»

Вкладка «Распределения» предоставляет вам информацию обо всех распределениях объектов. Перейдите на вкладку «Распределение в новой TLAB». Здесь вы можете видеть профили распределения объектов по классам (какие экземпляры классов распределяются), по потокам (какие потоки распределяют большинство объектов) или по стеку вызовов (обрабатывать его как глобальную информацию о распределении).

5.4.1 Распределение по классам

Давайте посмотрим, что вы можете узнать из каждой из этих вкладок. Первый (на скриншоте выше), «Распределение по классам», позволяет увидеть, какие классы распределены больше всего. Выберите тип в средней вкладке, и вы получите статистику распределения (со следами стека) для всех распределений экземпляров этого класса.

Первая проверка, которую вы должны сделать здесь, — это найти любые «бесполезные» выделения объектов: любые примитивные оболочки, такие как Integer или Double (которые часто указывают на использование коллекций JDK), java.util.Date , java.util.GregorianCalendar , Pattern , любые средства форматирования и т. д. Я написал несколько советов по настройке памяти во второй части моей недавней статьи . Вкладка «Stack Trace» позволит вам найти код для улучшения.

Другой проблемой для проверки является чрезмерное распределение объектов. К сожалению, здесь нельзя дать общих советов — вы должны использовать свой здравый смысл, чтобы понять, что означает «чрезмерное» в вашем приложении. Распространенными проблемами являются бесполезное защитное копирование (для клиентов только для чтения) и чрезмерное использование String.substring, так как класс String изменяется в Java 7u6 .

5.4.2 Распределение по потокам

Вкладка «Распределение по потокам» может быть интересна, если у вас есть несколько типов обработки данных потоков в вашем приложении (или вы можете различить, какие задачи выполняются какими потоками) — В этом случае вы можете определить распределение объектов по потокам:

5.4.3 Профиль распределения

Если все ваши потоки одинаковы (или у вас есть только один поток обработки данных) или вы просто хотите просмотреть информацию о распределении высокого уровня, перейдите непосредственно на вкладку «Профиль распределения». Здесь вы увидите, сколько памяти было выделено для каждого стека вызовов во всех потоках.

Это представление позволяет вам найти пути кода, оказывающие наибольшее давление на подсистему памяти. Здесь следует различать ожидаемые и чрезмерные ассигнования. Например, если из метода A вы вызываете метод B более одного раза, а метод B выделяет некоторую память внутри него, и все вызовы метода B гарантированно возвращают один и тот же результат — это означает, что вы чрезмерно вызываете метод B. Другой пример чрезмерных вызовов метода Выделение / object может быть конкатенацией строк в вызовах Logger.log . Наконец, остерегайтесь любых оптимизаций, которые вынуждают вас создавать пул многократно используемых объектов — вы должны объединять / кэшировать объекты, только если у вас есть не более одного сохраненного объекта на поток (хорошо известный пример — ThreadLocal <DateFormat> ).

5.5 Вкладка «Код полета» в Java

Следующая большая вкладка в представлении JFR — вкладка «Код». Это полезно для оптимизации процессора:

Вкладка обзора предоставляет вам 2 вида: «Горячие пакеты», где вы можете увидеть время, потраченное на пакет Java, и «Горячие классы», которые позволяют вам увидеть самые дорогие классы ЦП в вашем приложении.

Представление «Горячие пакеты» может быть полезно, если вы используете сторонние библиотеки, над которыми у вас очень мало контроля, и вы хотите получить сводную информацию об использовании ЦП для своего кода (один пакет), стороннего кода (несколько других пакетов) и JDK (a еще несколько пакетов). В то же время я бы назвал это «представлением CIO / CTO», потому что оно не интерактивное и не позволяет увидеть, какие классы из этих пакетов виноваты. Как разработчик, вам лучше использовать фильтрацию для большинства других таблиц на этой вкладке:

5.5.1 Горячие методы / вкладки дерева вызовов

Вкладки «Горячие методы» и «Дерево вызовов» — это обычные представления, предоставляемые буквально любым профилировщиком Java. Они показывают горячие точки вашего приложения — методы, в которых ваше приложение проводило большую часть времени, а также пути кода, которые ведут к этим горячим точкам. Как правило, настройку ЦП приложения следует начинать с вкладки «Горячие методы», а затем проверять, достаточно ли нормальна общая картина на вкладке «Дерево вызовов».

Вы должны знать, что все профилировщики с низким уровнем воздействия используют выборку для получения профиля ЦП. Профилировщик выборки периодически создает дамп трассировки стека всех потоков приложения. Обычный период выборки составляет 10 миллисекунд. Обычно не рекомендуется сокращать этот период до менее 1 мс, поскольку влияние выборки станет заметным.

В результате профиль процессора, который вы увидите, является статистически достоверным, но не точным. Например, вам может не повезти, если вы выберете довольно редко вызываемый метод прямо в интервале выборки. Время от времени это происходит… Если вы подозреваете, что профилировщик показывает вам неверную информацию, попробуйте реорганизовать «горячие» методы — встроить метод в вызывающую программу на самом горячем пути или, наоборот, попытаться разделить метод на 2 части — может быть достаточно удалить метод из представления профилировщика.

5.5.2 Вкладка «Исключения»

Вкладка «Исключения» является последней вкладкой в ​​представлении «Код», на которую стоит обратить внимание в общем случае оптимизации. Бросать исключения Java очень медленно, и их использование должно быть строго ограничено исключительными сценариями в высокопроизводительном коде.

Представление «Исключения» предоставит вам статистику о количестве исключений, которые были сгенерированы во время записи, а также их следы стека и детали. Перейдите на вкладку «Обзор» и проверьте, видите ли вы:

  • Любые неожиданные исключения
  • Неожиданное количество ожидаемых исключений

Если вы видите что-то подозрительное, перейдите на вкладку «Исключения» и проверьте сведения об исключении. Постарайтесь избавиться хотя бы от самых многочисленных.

5.6 Вкладка Темы JFR

Вкладка Темы JFR предоставляет вам следующую информацию:

  • Использование ЦП / Диаграммы подсчета потоков
  • Профиль ЦП для каждого потока — аналогичен профилю на вкладке Код, но для каждого потока
  • Конфликт — какие потоки были заблокированы, какими и как долго
  • Задержки — что заставило потоки приложения перейти в состояние ожидания (здесь вы четко увидите некоторые издержки JFR)
  • Экземпляры блокировок — блокировки, вызвавшие конфликт потоков

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

5.7 Вкладка ввода / вывода JFR

Вкладка ввода / вывода должна использоваться для проверки ввода / вывода файлов и сокетов в вашем приложении. Он позволяет увидеть, какие файлы обрабатывает ваше приложение, каковы размеры чтения / записи и сколько времени потребовалось для завершения операции ввода-вывода. Вы также можете увидеть порядок событий ввода-вывода в вашем приложении.

Как и с большинством других вкладок Java Flight Recorder, вам нужно интерпретировать вывод этой вкладки самостоятельно. Вот несколько примеров вопросов, которые вы могли бы задать себе:

  • Я вижу какие-либо неожиданные операции ввода-вывода (для файлов, которые я не ожидаю увидеть здесь)?
  • Открывать / читать / закрывать один и тот же файл несколько раз?
  • Ожидаются ли размеры блоков чтения / записи? Разве они не слишком маленькие?

Обратите внимание, что настоятельно рекомендуется уменьшить параметр JFR «File Read Threshold» (вы можете установить его при запуске записи JFR) до 1 мс, если вы используете SSD. Вы можете пропустить слишком много событий ввода-вывода на SSD с порогом по умолчанию 10 мс. Вкладка «Обзор» ввода / вывода отличная, но она не предоставляет никакой дополнительной информации по сравнению со следующими 4 специализированными вкладками. Каждая из 4 специализированных вкладок (чтение / запись файла, чтение / запись сокета) похожа друг на друга, поэтому давайте рассмотрим только одну из них — «Чтение файла».

Здесь есть 3 вкладки: «По файлу», «По теме» и «По событию». Первые две вкладки группируют операции по файлам и по потокам. Последняя вкладка просто перечисляет все события ввода / вывода, но это может быть очень полезно, если вы исследуете, какие операции были выполнены над конкретным файлом (фильтр по «Путь») или если вы хотите выяснить, делали ли вы запросы на чтение для краткости фрагменты данных (отсортированные по «Bytes Read»), которые снижают производительность приложения. Как правило, вы всегда должны буферизовать чтение диска, чтобы только чтение файла было короче размера буфера.

Обратите внимание, что информация ввода / вывода также собирается с помощью выборки, поэтому некоторые (или многие) файловые операции будут отсутствовать на вкладке ввода / вывода. Это может быть особенно заметно на SSD-накопителях высшего класса.

Есть еще один связанный экран, который позволит вам группировать события ввода / вывода (и некоторые другие) по различным полям. Например, вы можете узнать, какое количество операций чтения прочитало данное число байтов (и проверить их трассировки стека). Перейдите на вкладку «События» слева от представления JFR, а затем на самую последнюю вкладку под названием «Гистограмма».

Здесь вы можете фильтровать / сортировать / группировать различные события по доступным столбцам. Каждое событие JFR имеет связанную трассировку стека, поэтому вы можете просмотреть информацию трассировки стека для выбранных событий:

Существует одна базовая область настройки производительности, не охватываемая JFR: антипаттерны использования памяти, такие как дублирующиеся строки или почти пустые коллекции с огромной емкостью. JFR не предоставляет вам такой информации, потому что вам нужен дамп кучи для такого анализа. Вот где вам нужен плагин JMC под названием «Анализ JOverflow».

6. Экосистема Java Production Tooling

В предыдущих статьях о Takipi мы рассмотрели экосистему инструментов Java для использования в производстве. Если вы хотите узнать больше новых инструментов, вы можете проверить следующие сообщения:

  • 15 инструментов, которые следует использовать разработчикам Java после выхода основной версии
  • Async Gos Mainstream: 7 инструментов реактивного программирования, которые вы должны знать
  • 7 новых инструментов, которые должны знать Java-разработчики
Ссылка: Oracle Java Mission Control: полное руководство от нашего партнера по JCG Михаила Воронцова в блоге Takipi .

Операционная система macOS славится своим удобством и продуманностью до мелочей. Одной из таких мелочей являются горячие клавиши и специальные действия.

Сейчас расскажем, как при помощи всего одной клавиши Option (Alt) можно получить более 20 дополнительных фишек при работе с Mac.

Собрали их по задачам, поэтому не удивляйтесь, что пунктов будет 10. А вот самих команд здесь 20.

📍 Спасибо re:Store за полезную информацию. 👌

Открываем новые пункты в строке меню

Практически любой элемент строки меню будет отображать дополнительные действия, если нажать на него с зажатой клавишей Option.

▸ для индикатора громкости откроется меню выбора источников ввода для переключения между встроенным микрофоном на компьютере и микрофоном на беспроводной гарнитуре.

▸ для иконки Wi-Fi будут доступны дополнительные сведения о текущей беспроводной сети и несколько пунктов меню для диагностики.

▸ аналогично дополнительные данные и опции отобразятся при нажатии с зажатой кнопкой Alt на иконке Bluetooth.

▸ тап по иконке центра уведомлений в паре с волшебной клавишей включит или выключит режим Не беспокоить на компьютере.

▸ индикатор Time machine позволит быстро перейти в папку с сохранёнными бекапами.

Экспериментируйте с другими иконками стандартных и сторонних приложений в строке меню, чтобы увидеть дополнительные возможности.

Быстро переходим к настройкам

Если вместе с зажатой клавишей Option нажать функциональные кнопки верхнего ряда клавиатуры (или Touch Bar), получится сразу перейти в соответствующий раздел системных настроек.

▸ Регулировка яркости + Option открывает настройки дисплея.

▸ Клавиша Mission control + Option открывает настройки одноименной фишки

▸ Кнопки изменения громкости + Option приведут в меню настроек звука.

Выключаем и перезагружаем Mac без таймера

При попытке выключить или перезагрузить компьютер из строки меню пользователь сталкивается с диалоговым окном, в котором предлагается открывать запущенные приложение после следующего запуска системы.

Нужно либо подтвердить действие, либо подождать 60 секунд для автоматического закрытия диалогового окна.

Если перед выключением или перезагрузкой зажать клавишу Option, диалоговое окно отображаться не будет.

Вырезаем файлы при копировании

Пользователи, которые перешли на Mac с Windows-компьютеров, долго пытаются найти аналог горячей клавиши Control + X для вырезания файла с дальнейшим перемещением.

В macOS данная фишка работает немного иначе. Сначала копируем данные при помощи сочетания Command + C, а в месте вставки для копирования данных нажимаем Command + V, а для переноса Command + Option + V.

Копируем путь к файлу

Если попробовать провернуть данный трюк перед копированием и нажать Command + Option + C, то в буфер обмена будет помещен не сам файл, а путь к нему.

Иногда это бывает очень полезно.

Удаляем файлы мимо корзины

Прокачиваем еще несколько известных шорткатов:

▸ используем Command + Backspace для удаления выбранных данных в корзину, а Command + Option + Backspace для безвозвратного удаления мимо корзины.

▸ применяем Command + Shift + Backspace для очистки корзины, а Command + Shift + Option + Backspace для очистки корзины без меню подтверждения.

Изменяем направления поворота для изображения

В приложении Просмотр или Finder есть кнопка для быстрого поворота фото на 90 градусов против часовой стрелки. Если фото нужно повернуть один раз по часовой стрелке, приходится трижды крутить его влево.

Зажимаем клавишу Option и направление поворота меняется на противоположное.

Меняем приложения по умолчанию для файлов

Чтобы открыть файл в специфической программе мы вызываем его контекстное меню и выбираем программу в разделе Открыть в приложении.

Если при этом зажать клавишу Option, пункт изменит название на Всегда открывать в приложении.

Так получится быстро изменить программу по умолчанию для любого типа файлов.

Работаем с текстом быстрее

При работе в текстовых редакторах, стандартных и сторонних приложениях для работы с текстом или браузерах клавиша Option поможет ускорить процесс.

▸ Option + стрелки позволяют перемещать курсор по словам.

▸ Option + Shift + стрелочки приводят к быстрому выделению слов.

▸ Option + Backspace позволяет удалять слова целиком.

Включаем режим слайд-шоу

При выделении несколько фотографий можно быстро просмотреть их в стандартном просмотрщике Mac.

Для этого нужно лишь добавить клавишу Option к уже знакомой клавише Пробел. В этом случае шорткат Option + Пробел запустит режим полнокровного слайд-шоу.

Теперь вы знаете, насколько клавиша Option (Alt) является нужной и полезной в macOS. Не стесняйтесь экспериментировать и нажимать ее в других меню или приложениях для получения дополнительных опций.

(15 голосов, общий 4.80 из 5)
🤓 Хочешь больше? Подпишись на наш Telegramнаш Telegram. … и не забывай читать наш Facebook и Twitter 🍒 iPhones.ru Выучите и используйте.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *