Как стать автором
Обновить
87
0

Пользователь

Отправить сообщение
Вот именно. Тоже не усматриваю в этом взлома. Потеря почты не относится к ТВ напрямую. С таким же успехом можно поставить пароль 12345, а потом винить ТВ, что у них дыра в безопасности после т.н. «взлома».
Прочитал новость, но так ничего и не понял. В чём суть взлома? Откуда следует факт взлома? И как 2016 год связан с сегодняшним днём?
Есть ли официальный список «навечно» заблокированных ресурсов?
А в чём заключается киллер-фича игры? Не увидел. Даже если она есть (подразумевается), она должна быть в первом предложении опуса, который описывает игру. Это то, что должно цеплять. А у видел я лишь «две враждующие фракции», «пошаговые бои», подробности лора, механики и т.д. Это что-то оригинальное? Это должно зацепить? Это позволяет выделиться? Нет.
Я бы не был так уверен. Если учесть, что развитию послужили агрессия, жестокость и взаимное истребление, начиная ещё с первобытных племён, то остаётся большая вероятность, что кто-то на эмоциях нажмёт на кнопку. Нужно всего лишь, чтобы возник дефицит жизненно важных ресурсов, и конфликт не заставит себя ждать, даже в едином государстве на всю планету. Жить-то всем хочется.
Всегда юзал ctrl-shift-I.
Оказывается, J отдельно идёт. Не знал.
Просто в хроме всё одинаково, F12, J, I — одна и та же консоль.
А вот это интересно, спасибо. Проблема воспроизводится, если вырезать 25 символов. И это всё меняет. Непонятно только, почему при перезагрузке вкладки или при переходе на другой сайт память не очищается. Только если закрыть вкладку — убивается соответствующий процесс, а вместе с ним и память.
Добавил тесты на jsperf.com
Буквально сегодня на мой вопрос дали хорошее решение, и я его честно отметил решением. Вопрос закрыт.

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

Еще через какое-то короткое время он тоже становится решением. Я не в претензии вообще. Но странное ощущение слегка.

Так можно делать? Я могу дописывать английские ответы к решенным вопросам и помечать их решениями? Или даже проще: переводить ответы на английский, а через некоторое время они сами становятся решением (спасибо кураторам).
И система не предусматривает этот вариант, а через Другое нельзя объяснить



Опять же, это лишь мой безобидный случай. А придумать можно много других случаев. Например, когда автор выбрал не то решение, тогда куратор должен иметь силу отменить решение автора и выбрать другое решение. Верно?

Или, наоборот, куратор выбирает решение, которое автора не устраивает вообще по каким-то причинам, которые он собирался написать в комментарии к ответу. Но он внезапно стал решением. И что делать? Отвечающий может, конечно, продолжить беседу, но в целом его ответ уже отмечен, так что мотивация падает. Куда и как жаловаться автору?

Суть моего послания такова. Введя кураторов, вы создали конфликт интересов. Кураторы теперь решают, что нужно автору и что он хотел. Раньше всё было просто — делай, что хочешь, только не нарушай правила. Любой вопрос, ответ или комментарий принадлежит автору (опять же, если не нарушает правила). Лайк — принадлежит тому, кто лайнул. Отметка о решении, что логично, ставится автором. Голосования за решение немного запутали, но тоже в пределах нормы. А идея с кураторами рушит это простоту.

В общем, у меня нет конкретной постановки проблемы, так что извините за весь этот флуд, но есть стойкое ощущение, что не всё продумано. А что именно — надо думать.
Формально вы правы, поэтому статью я начал с «30 байт» на 15 символов, но реально в Chrome строка из 15 млн. символов «z» занимает 15 мегабайт, судя по диспетчеру Chrome. Плюс я считаю хорошим тоном отвечать на языке того, кто задал вопрос, если это не меняет суть ответа.
То есть можно дать ответ и сразу отметить его решением?
Devtool кэширует тела ответов ajax, из-за чего память процесса (вкладки) в Chrome, естественно, растёт, породой до огромных размеров. Но чтобы анализировать проблемы памяти именно в JS, нужно смотреть на память JS, она называется «JS Heap» или «Память JavaScript».

В Devtool во вкладке памяти предлагается анализировать как раз память JS, так что проблемы нет.

В диспетчере задач Chrome нужно отдельно включить столбик с памятью JS, для этого кликните правой кнопкой по заголовкам и выберите соответствующий пункт:
Скриншот

Вы рассуждаете с точки зрения логики языка JavaScript. Но эта особенность — не часть языка, а часть конкретной системы управления памятью. Эта система вам ничего не «должна». В частности, у вас нет гарантий того, какой объем памяти будет ассоциирован со строкой, и как там вообще всё будет оптимизировано.
Этого нет в спецификации JavaScript, так что странно надеяться на такое. Даже если сможете, это будет возможностью конкретной среды исполнения. Для Google Chrome я не знаю способов. Но факт остаётся фактом — в V8 у строк есть скрытая ссылка на «родителя» или нескольких «родителей».
Нет, ссылка находится в самой строке small. Об этом вся статья.
Почему не сделать явную очистку?
huge = undefined;
Потому что это не поможет. Ссылка на большую строку останется в small.
Это не утечка, так и должно быть. Мусор сначала накапливается, а не чистится сразу. И если наращивать память по 15Мб в секунду, то где-то несколько сотен мегабайт и должно быть в пике. С применением clearString() будет та же картина и в Chrome.
Интересно. Но всё же нет. Я добавил вашу функцию к своим тестам и вот что вышло:
console.log(Test(test_arr,clearString));
console.log(Test(test_arr,stringCopy));
console.log(Test(test_arr,clearString2));
console.log(Test(test_arr,clearString3));
752.80500005465
1093.955000047572
309.3099999241531
262.0650000171736

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

Не знаю точно, почему у вас другие результаты, но хочу обратить ваше внимание на способ тестирования. Например, компилятор оптимизатор вот это в теории вообще может выкинуть:
'Some text'.split('').join('');

Ведь результат нигде не используется.

К тому же у вас искусственная строка, а нам для чистоты эксперимента нужно чистить именно «грязные» строки.

Поэтому в моих тестах я из большой строки нарезаю много маленьких, которые ссылаются по разным адресам на большую. Это помешает оптимизатору мешать тестированию, какой бы он ни был. Далее, в самом цикле результат мы не выкидываем сразу, а обязательно куда-то сохраняем, это тоже мешает потенциальному оптимизатору искажать результаты. Я не эксперт в V8, а просто рассчитываю на разумный подход оптимизатора. Возможно, я что-то не учёл, тогда прошу обратить на это моё внимание.
Будет медленнее, чем встроенные функции. Но можете попробовать, напишите свою clearString() — протестируем, сравним скорость. Собственно, .split('').join('') — это и есть побайтовое копирование.
Этот «дилетант» прочёл всю спецификацию JavaScript всех версий от корки до корки. И вообще, у него может быть Firefox, где проблемы нет. Но заказчик всё же позвонил этому «горе-профи».

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность