Одна из наших систем соков (стек PI ABAP + JAVA) давала проблемы с производительностью. Все 64 ГБ, сконфигурированные для машины, забиты (и 8 ядер). Каждый подозревает часть java, но я думаю, что это разные.Когда куча jvm выделена ОС
Узлы сервера Java, где выполняется перезапуск с ошибкой Out Of Memory. Глядя на hprof-файлы, я обнаружил, что они имеют размер всего 1.2G (средний 3-х серверных узлов), когда для узлов сервера настроено 3 ГБ (как -Xms и Xmx). Это наблюдение приводит к следующим сомнениям.
Я читал, что когда Xms и Xmx установлены на одно и то же значение, jvm выделяет всю кучу при ее запуске. Если в этом случае серверные узлы будут иметь 3 ГБ кучи с самого начала. Если да, то почему это не отражается в файле hprof или если hprof содержит только память, выделенную объектам во время выполнения, размер явно указывает, что кучная память свободна (более 50%), поэтому как ошибка OOM. .. !! .. ??
Я также знаю, что Linux делает что-то, называемое памятью по-фиксации. т.е. память на самом деле не указана, когда она запрашивается, но когда она фактически используется. Это способствует исключению из памяти. Подобно тому, как JVM запускает os, он говорит, что вам было выделено 3 ГБ памяти, но на самом деле откладывает его, пока он не понадобится. К тому моменту, когда jvm на самом деле пытается выделить память для объектов, некоторые другие приложения могли бы исчерпать память. Это возможно...??
Даже если у узлов java была проблема с утечкой памяти, не ограничивалась ли она 3 ГБ кучи. Как он может разбудить всю 64G физической памяти .... ???
Еще одна вещь, которую я наблюдал, заключалась в том, что пространство подкачки использовалось только на 50%.
Любой свет на этом ...!
Я думаю, что у вас больше шансов получить ответ на serverfault.com – vwegert
спасибо..поставлено в serverfault также – varun