Цикл убивает браузер?
Видимо раньше Вы внутри цикла выполняли полезную нагрузку и отдавали рабочие ресурсы процесса между делом, сам того не подозревая. Везде, где используют бесконечный цикл, а не пользуются системой сообщений-событий для организации программы — организуют раздачу сообщений или таймаут вручную в обязательном порядке. Возьмите для примера приложения на Win API:
while (GetMessage(&msg, nullptr, 0, 0))
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
— здесь цикл подвисает до получения сообщений от системы. Ну или другой пример (что пришел в голову), Python Pygame:
while True:
  # код приложения
  tick(60) # отдадим время свыше необходимого фреймрейта системе
Ну а на JS делать такое — моветон, совершенно неправильно. Поскольку любое JS приложение должно быть событийно-ориентированным, реагировать на действия пользователя, как и большинство UI-приложений. Если Вам нужно выполнять действие с интервалом, используйте:
function main() {} // вместо Вашего напрасного цикла
setInterval(main, 50); // вызывайте каждые 50 миллисекунд, например
А какого эффекта вы ожидали?

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