Как лучше всего использовать большой объем памяти в Java? - PullRequest
0 голосов
/ 24 августа 2018

У меня есть сервер приложений и 64 ГБ памяти.И веб-приложение Java на нем.Как лучше всего использовать все эти 64 ГБ?Мне нужно хранить большой набор объектов (HashSet). Лучше ли использовать -Xms -Xmx?Но хорошо ли будет работать GC?Стоит ли использовать сторонние решения, такие как библиотеки кеша (memcache и т. Д.)?

1 Ответ

0 голосов
/ 24 августа 2018

Довольно общий вопрос, поэтому широкий ответ.

  • Хотя в последнее время дела идут лучше, ни одна из «свободных» JRE (Oracle, IBM) не «известна» поддержкой больших объемов памяти. Если вам действительно нужна одна JVM по тем или иным причинам, то вам, вероятно, следует прикусить пулю и получить такой продукт, как zing от Azuul. zing позволяет использовать до 2 ТБ на каждую виртуальную машину Java, и он также разработан для минимизации приостановки GC. (это реальная проблема с другими виртуальными машинами: по крайней мере, несколько лет назад их GC-паузы будут расти линейные с объемом памяти.)
  • Но тогда, лучший способ в 2018 году: уменьшать, а не увеличивать. Значение: лучше иметь несколько JVM (может потреблять 4, 8, 16 ГБ) и использовать такие вещи, как балансировка нагрузки, чтобы эти JVM были заняты.

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

...