Перейти к содержанию

SmokiMo

Администратор
  • Публикаций

    2010
  • Зарегистрирован

  • Посещение

  • Победитель дней

    41
  • Отзывы

    100%

Весь контент SmokiMo

  1. Если диалог работает при убранном setCond, то попробуй переместить setCond перед высвечиванием диалога
  2. А чего никто жалобу не подал, я случайно вообще в эту тему забрел
  3. Да, с этой статьей тоже знаком, хотел и ее добавить
  4. В данной заметке я хочу показать каким образом можно определять и устранять утечки памяти в Java на примере из моей повседневной работы. Мы не будем здесь рассматривать возможные причины появления утечек, об этом будет отдельная статья, так как тема достаточно обширная. Стоит заметить, что речь пойдет о диагностике именно Heap Memory, об утечках в других областях памяти будет отдельная статья. Инструменты Для успешной диагностики нам понадобятся два инструмента: Java Mission Control (jmc) и Eclipse Memory Analyzer. Вобщем-то можно обойтись только Memory Analyzer, но с JMC картина будет более полной. JMC входит в состав JDK (начиная с 1.7) Memory Analyzer может быть загружен отсюда: MAT Анализ использования памяти Прежде всего, нужно запустить приложение со следующими флагами JVM: -XX:+UnlockCommercialFeatures -XX:+FlightRecorder Не используйте эти опции на production системе без приобретения специальной лицензии Oracle! Эти опции позволят запустить Flight Recorder – утилита, которая поможет собрать информацию об использовании памяти (и много другой важной информации) во время выполнения программы. Я не буду описывать здесь как запустить Flight Recorder, эта информация легко гуглится. В моем случае было достаточно запустить FR на 10-11 минут. Рассмотрим следующий рисунок, на котором показана классическая «пила» памяти, а так же важный сигнал, что что-то не так с использованием памяти: Можно увидеть, что после каждого цикла очистки памяти, heap все больше заполняется, я выделил это желтым треугольником. «Пила» все время как бы ползет вверх. Это значит, что какие-то объекты не достижимы для очистки и накапливаются в old space, что со временем приведет к переполнению этой области памяти. Выявление утечки Следующим шагом нужно выявить, что именно не доступно для очистки и в этом нам поможет Memory Analyzer. Прежде всего, нужно загрузить в программу heap dump работающего приложения с предполагаемой утечкой памяти. Это можно сделать с помощью «File → Acquire Heap Dump». После загрузки в диалоге «Getting Started Wizard» выбрать «Leak Suspects Report» после этого откроется краткий обзор возможных утечек памяти: Если вернуться на вкладку «Overview» и выбрать «Dominator Tree», то можно увидеть более подробную картину: Дерево показывает структуру «тяжелого» объекта, а так же размер его полей (по типу). Можно видеть, что одно из полей объекта MasterTenant занимает более 45% памяти. Устранение утечки Имея результат анализа из предыдущего пункта, следующим шагом идет устранение накапливания объектом памяти. Тут все сильно зависит от конкретного кода. Общая рекоменация – нужно найти и проанализировать все места, где происходит инициализация или изменение соответствующего поля или полей, чтобы понять механизм накапливания памяти. В моем случае в коллекцию постоянно добавлялись записи из множества (около 150) потоков при определенных условиях. После находжения и устранения утечки, не лишним будет пройти все шаги снова, проанализировать память и отчет Memory Analyzer, чтобы убедиться что фикс помог. Ссылка на оригинал
  5. Привет Forummaxi! Хочу поделиться с вами одним инструментом, который помогает делать меньше ошибок в коде и реже гуглить по вопросам разработки. О чем это ты? Программируете на Java? Codota поможет вам в этом! Этот помощник разработан, чтобы помочь вам писать код, не проверяя лишний раз документацию. Codota понимает код и предлагает вам правильные решение в нужное время. Означает ли это, что однажды роботы возьмут на себя наши рабочие места разработчиков? Возможно. Но пока еще нет. Кодить это сложно. Такие сервисы, как StackOverflow или GitHub, безусловно, помогают нам в этом. Теперь у Java-разработчиков есть еще один альтернативный вариант: ИИ-помощник Codota. Лично я всегда хотел получить помощь искусственного интеллекта при разработке. Codota учится на существующем коде, чтобы помочь вам быстрее и умнее строить программное обеспечение. Он работает с любой IDE, которую вы используете, и использует свои изученные модели кода, чтобы предложить наилучший вариант. Как это работает? По словам создателей этого сервиса, Codota создает прогностические модели кода, которые предполагают доработку кода и связанный контент на основе текущего контекста, присутствующего в вашей среде IDE. Программа сочетает в себе методы анализа программ, обработки естественного языка и машинного обучения для изучения кода. Затем он предоставляет результаты различных моделей для любой заданной задачи. Если вы установили Codota, появляется окно, связанное с вашей IDE. Поэтому, когда вы выбираете переменную, тип или метод, Codota дает примеры кода, основываясь на том, что вы уже написали. Можно назвать хорошей гадалкой по фрагментам кода. Так, а это точно ИИ? Ну, по словам Марселя Бруха, Codota оценивает и сортируют примеры кода по релевантности. В настоящее время, Codota ограничена Java, т.к. прежде сервис должен начать понимать язык, который анализирует. Давай теперь про минусы Конечно, есть некоторые рамки. Codota еще не знает сути кода. В качестве примера вам часто будет предоставлен кусок кода какого-то другого программиста из мира сего. Очевидно, это означает, что нет гарантии на всегда красивый и чистый код. Но поскольку база знаний Codota основывается на таких сервисах, как GitHub, BitBucket и StackOverflow, то каждый день ИИ становится лучше. Codota работает на Linux, Windows и MacOS. Программа работает с Eclipse, IntelliJ и Android Studio. Также, есть довольно интересное промо-видео, в котором подробно показано, как это работает. Ссылка на оригинал
  6. Ребята, те кто до сих пор сидят на SVN'e, призываю вас перейти на Git !
  7. SmokiMo

    Ищу скрипт

    Могу написать
  8. SmokiMo

    Дьюп аукцион pw

    Создайте тему с вашими услугами в торговорм разделе и разместите ссылку в вашей подписи =)
  9. Я бы бесплатно сделал =(
  10. Всем привет. Нужен человек, который займется написанием/исправлением скриптов на C#, необходим человека на постоянной основе для работы над плагинами серверов RUST Жду ваших обращений ко мне в скайп - L2jSmokiMo. Сроки, цена - договорные.
  11. Создайте все это дело в раздел мануалов
  12. Ну почему не по теме? Вы же первый завели разговор о том, что на ацисах нет бОланса, и начали предлагать свои варианты фиксов скиллов.
  13. Что за нубо СХ такой, который не может убежать от гнома и влить ему дамаг? Это из серии фразы в адрес лучников "А че ты убегаешь как крыса, го не убегай и я тебя убью"
  14. Гном изначально задумывался не как боевой класс, а для свипа, спойла и крафта. Для боя гномами есть такая штука как саб класс. А для олимпа есть классовые бои.
  15. Что? Соло дестр убивает некра? Что это за нубонекр такой, который не может убежать от дестра и вдать ему дамаг. Учитывая, что у дестра толком то и на мдеф нету ничего кроме бижи.
  16. http://forummaxi.ru/files/category/1-lineage-ii/
  17. Для начала, нужно научиться пользоваться тегом Код, епт И тегом
  18. Берем птс С4, читаем пачноут С4-Интерлюд и согласно пачноута дергаем статы скиллов из ПТС скриптов скиллдаты, наслаждаемся =)
  19. http://forummaxi.ru/tutorials/article/137-не-пускает-на-сервер-lineage-2/
  20. Возможно он не знал и не задумывался о том, что так можно сделать.
  21. Компания Oracle, начавшая судиться с Google из-за Java ещё в 2010-м, после прошлогоднего судебного поражения решила не сдаваться, и теперь подала новую апелляцию. В интернете сразу выпала месячная норма комментариев «эта компания юристов только и может судиться, нет чтобы что хорошее сделать». Для пропустивших предыдущие серии этой мыльной оперы — краткое содержание: 2007 год: Google представляет новую систему Android, использующую Java. Глава Sun Microsystems Джонатан Шварц в своём блоге радостно поздравляет Google с этим. 2010 год: Oracle покупает Sun, получая Java, и не поздравляет Google с успехом Android, а подаёт в суд «из-за нарушения авторских и патентных прав» в случае с Java API. 2012 год: суд решает, что «структура, последовательность и организация» API не подлежат копирайту, победа за Google. Oracle подаёт апелляцию. 2014 год: рассмотрение апелляции приводит к решению «всё-таки подлежат, но использование может подпадать под fair use». Дело требует нового рассмотрения. 2016 год: новый судебный процесс завершается тем, что в случае с Android был fair use, победа опять за Google. 2017 год: Oracle снова подаёт апелляцию. Эта музыка будет вечной (если не забыть зарядить андроидфон).
  22. Хз, мы нашим модераторам, вообще ничего не платим
  23. SmokiMo

    Vk бонус

    У нас есть раздел файлов, залейте в него
×
×
  • Создать...