
Anatoly
14.05.2017
03:26:01
@Worldbeater @troyanov Модераторы, тут втирают какую-то дичь

Илья
14.05.2017
04:37:25
это че реклама наркоты? О_о

Max
14.05.2017
04:42:24
О, тысячник

Владимир
14.05.2017
04:43:01

Google

Дмитрий
14.05.2017
04:45:03

Friedrich
14.05.2017
06:31:05
@nikita_tsukanov большое спасибо за плагин к VS2017, всё прекрасно работает.
Правда, там шрифты почему-то выглядят странно, не так как в остальной студии. Попробую сделать патч чтоли.

Begpo_CnupTa
14.05.2017
06:48:02
хочу потренироваться в ASP.NET MVC какую VS ставить из бесплатных и какой ASP? для тех кто будет в первый раз с этим разбираться?

Timur
14.05.2017
06:50:37
последняя VS

Begpo_CnupTa
14.05.2017
06:51:33
я нашёл гайдик тут вс2012
https://habrahabr.ru/post/175999/
вот думаю 15 или 17 ставить)

Timur
14.05.2017
06:52:01
не надо думать, надо ставить

Cloudlet
14.05.2017
06:52:03

Timur
14.05.2017
06:52:03
17

Cloudlet
14.05.2017
06:52:39

Илья
14.05.2017
06:52:42

Google

Begpo_CnupTa
14.05.2017
06:53:11
ну может последняя платная, я хз

Timur
14.05.2017
06:53:29
платная про
комьюнити бесплатные

Илья
14.05.2017
06:53:38
во всех версиях есть бесплатная Community версия

Timur
14.05.2017
06:54:14
на сайте студии же всё написано

Begpo_CnupTa
14.05.2017
06:55:03
спасибо

Миша
14.05.2017
06:56:51
Ребят, а есть кто по UWP шарит?
У меня проблема абсолютно тупая
Не могу понять как что-нибудь из памяти выгрузить.
Видео допустим, которое загружал MediaPlayer
Или игру на MonoGame
Вроде как учили, делаю = null; а количество используемой памяти не уменьшается.
А если ещё раз попробовать запустить игру или открыть видео - увеличевается.

Slava
14.05.2017
07:01:28

Миша
14.05.2017
07:02:01
Так как правильно-то?
Я не помню где это подчерпнул. Там было типа что сборщик мусора должен выпроводить после приравнивания к null.

Slava
14.05.2017
07:07:29
Так как правильно-то?
присвоение null - это не освобождение памяти, а присвоение нулевой ссылки. Память сборщик мусора освобождает по своей прихоти и неизвестно когда.

Миша
14.05.2017
07:07:29
Объясните же как правильно, ну?
Принудительно я освободить её не могу, только надеяться что борщик мусора соизволит?

WarFollowsMe
14.05.2017
07:08:17
да

Google

WarFollowsMe
14.05.2017
07:08:43
сборщик мусора чистит память если на нее никто не ссылается

Vyacheslav
14.05.2017
07:09:26
Вроде можно сборщику сообщить что не пользуешься объектом

WarFollowsMe
14.05.2017
07:09:37
GC.Collect есть но это очень плохая практика

Slava
14.05.2017
07:09:46

WarFollowsMe
14.05.2017
07:10:04
именно так

Friedrich
14.05.2017
07:10:52
Объясните же как правильно, ну?
Ради интереса вызови GC.Collect + GC.WaitForPendingFinalizers + снова GC.Collect. Если это не помогает — бери профайлер памяти и разбирайся, чего утекает и почему.
Ну а если помогает — тогда забей, утечки нет

Миша
14.05.2017
07:13:33
Не, не помогает.

Slava
14.05.2017
07:16:24
разбирайся что память держит

WarFollowsMe
14.05.2017
07:17:29
dotMemory у брейнсов вроде бесплатный. мне пару раз помогал

Gid
14.05.2017
07:17:34
Принудительно вызвать сборщик мусора как мне помнится вообще не возможно

Gid
14.05.2017
07:18:38
ну то есть УСЛОВНО ПЛАТНЫЙ

WarFollowsMe
14.05.2017
07:19:20
Free trial for 5 days of actual use. Думаю хватит

Миша
14.05.2017
07:29:19
Так, ну я понял что у меня не вычищается ни один экземпляр той фигни, которую я сам писал.
Это, получается, мне нужно просто пройтись по ним и "присвоить нулевую ссылку"?
Вообще это как-то странно. А нельзя Game.Exit() как-то перегрузить что бы он окно не убивал?

Gid
14.05.2017
07:32:00
там ток 24 дня осталось правда

Google

WarFollowsMe
14.05.2017
07:33:24
Это, получается, мне нужно просто пройтись по ним и "присвоить нулевую ссылку"?
смотря как используешь эти объекты. объект существует только в тех рамках где создан. если внутри метода, то при выходе из метода ссылка обнулится и память почистится, если внутри класса, то нужно убрать ссылку на объект этого класса. также используется using для потоковых штук типа FileStream и тому подобное, в этом случае память чистится при выходе из using

Миша
14.05.2017
07:37:05
Именно по этому я и не понимаю в чём проблема

WarFollowsMe
14.05.2017
07:37:21
ну еще конечно же важным пунктом являются потоки и события. если в классе есть event и в объекте этого класса на это событие кто-то повесится, то даже при присвоении объекту нулевой ссылки он все равно останется в памяти пока не освободится событие.

Миша
14.05.2017
07:37:41
Не такого нет
У меня инициализация игры: _game = MonoGame.Framework.XamlGame<Game1>.Create(launchArguments, Window.Current.CoreWindow, swapChainPanel); - одна срока, блин

WarFollowsMe
14.05.2017
07:37:56
тогда нужно смотреть код

Миша
14.05.2017
07:38:45
В прошлый раз, когда я с этим столкнулся - под туже UWP пытался клиент для одного стримингового сервиса сделать

Admin
ERROR: S client not available

Миша
14.05.2017
07:38:57
Забил на это тоже потому, что не смог никак освобождать память
И если тут, с игрой, я ещё мог где-то накосячить
То там это выглядело: _MediaPlayer.SetSource(...); и всё

WarFollowsMe
14.05.2017
07:39:50
по этой строке сложно что-то понять. пройдись профайлером. посмотри что именно жрет память.

Slava
14.05.2017
07:39:52
Профайлер покажет что течёт

Миша
14.05.2017
07:40:05
Да я вижу что жрёт память

WarFollowsMe
14.05.2017
07:40:13
что?

Миша
14.05.2017
07:40:20
Ну, в смысле прошёлся уже
Все экземпляры, которые я в процессе игры создаю.
Почти
Но как бы я их создаю из _game, который должен освобождаться

WarFollowsMe
14.05.2017
07:41:54
если в твоей игре заложена такая логика, что существование этих экземпляров необходимо на протяжении всего сеанса игры, то значит у нее такие минимальные требования по памяти, что тут еще скажешь.

Google

WarFollowsMe
14.05.2017
07:42:22
либо меняй архитектуру свой игры, чтобы не надо было держать все объекты постоянно существующими. либо расширяй оперативку.

Миша
14.05.2017
07:42:51
Да в том-то и дело
У меня оперативы используется всего 60 МБ (прямо сейчас)
И 55 из них - это всякая XAML'ская ерунда
Ну, в смысле требования действительно очень не высокие
Но при смене уровня у меня эти жалкие 5 МБ никуда не исчезают
А уровней может быть много
Ну вот напрмер у меня есть класс Level
На уровне есть клетки - двумерный массив.
LevelCell[,] levelCellList = new LevelCell[60, 60];
Вот так выглядить инициализация уровня
В конце игры я просто делаю _level = null; // _level - экземпляр
Но 3600 клеток, каждая из которых содержит ещё по два объекта никуда не исчезают

Friedrich
14.05.2017
07:53:04
@nikita_tsukanov я вам там ШГ починил! https://github.com/AvaloniaUI/AvaloniaVS/pull/46

Миша
14.05.2017
07:56:38
Это жесть какая-то.
У меня просто в голове не укладывается
Я уже спецом в цикле перебрал все эти 3600 тупых клеток
И нифига
Из памяти они не уходят
Эта группа больше не существует