Почему мое использование памяти приложения кота продолжает расти?

Я думаю, вы найдете панд подходящими для ваших нужд. У него есть несколько потрясающих инструментов манипулирования данными.

Пример кода:

import pandas as pd

df = pd.read_csv('/path/to/csv/file')  # You can use the 'delimiter' argument to specify a delimiter of your choosing
x_column = df.iloc[:, 3]
y_column = df.iloc[:, 4]
z_column = df.iloc[:, 5]

Остальная часть кода (построение и т. Д.) Должна оставаться прежней

11
задан sharptooth 9 March 2009 в 11:42
поделиться

6 ответов

Поведение по умолчанию Sun "сервер" HotSpot состоит в том, чтобы увеличить "кучу" вместо очистки SoftReferences (используемый для кэшей). Значение по умолчанию должно было сохранить их в течение одной секунды для каждого мегабайта максимального размера "кучи" доступными. Так, ожидайте, что "куча" вырастет до максимального размера. Если у Вас действительно на самом деле заканчивается память с OutOfMemoryException или производительность становится плохой (из-за чрезмерного GC или маленьких кэшей), затем необходимо искать утечки памяти.

Также серверы Tomcat часто переносят из памяти утечки после перезагрузки приложений. Например, Tomcat совместно использует потоки между всеми приложениями, который часто вызывает Sun ThreadLocal реализация для неподходящего сохранения значений.

6
ответ дан 3 December 2019 в 04:34
поделиться

Если это только когда-либо растет, то это - утечка памяти. Но если это растет к Вашей макс. "куче", затем отбрасывает, затем это - нормальное поведение сборки "мусора". Существует много инструментов, которые можно использовать для узнавания больше. Один из самых простых должен соединиться с JConsole (часть JDK) и наблюдать Вашу "кучу" со временем.

Можно также посмотреть на информацию о сборке "мусора" с различными переключателями и параметрами как-verbose:gc для запуска с.

Если Вы хотите диагностировать утечки памяти, существует много превосходных доступных инструментов, включая несколько свободных, которые работают с Eclipse, NetBeans, IntelliJ, и т.д.

9
ответ дан 3 December 2019 в 04:34
поделиться

Ответ Tom Hawtin IMO является лучшим. Это растет, пока это не поражает макс., затем выполняет GC. В серверной среде это имеет смысл: Вы хотите лучшую производительность, не лучшее использование памяти. Вы предварительно вычисляете общий объем памяти, затем даете каждому приложению максимум, и затем все соответствует и имеет лучшую производительность. Это поведение можно настроить.

Используйте jconsole для взгляда на то, сколько действительно используется. Сделайте GC и наблюдайте то, до чего он снижается. То число не должно расти со временем, или у Вас есть утечка памяти. Используйте visualvm для отладки утечки памяти.

Каждый раз, когда Вы перезагружаете приложение, оно использует дополнительную пермскую память Генерала, которая не может быть исправлена (в Sun JVM, у других как JRockit нет этой проблемы). В производстве Вы не должны перезагружать приложение. Tomcat перезапуска каждый раз. Если Вы действительно хотите продолжать делать его затем, можно увеличить макс. память и также увеличить Max пермская память Генерала с флагом-XX:MaxPermSize=256m

4
ответ дан 3 December 2019 в 04:34
поделиться

С программой Лямбда-зонд можно легко посмотреть на использование памяти в Tomcat. (информация об опции System - Использование памяти). Вы видите в Оставшейся в живых графика Space пермского Генерала Штатный Кэш Кода Генерала Eden Space

Просто разверните этот warfile на коте и установите опцию запуска-Dcom.sun.management.jmxremote на запуск Java.

Теперь Вы видите то, что выращивает часть памяти.

4
ответ дан 3 December 2019 в 04:34
поделиться

Это не нормально, и вероятно показательно из утечки памяти.

Необходимо попытаться использовать профилировщика памяти для наблюдения, где приложение просачивается.

В целом необходимо искать циклы или повторенные операции, где объекты создают, но не избавляются правильно.

1
ответ дан 3 December 2019 в 04:34
поделиться

У Вас может быть утечка памяти. Я сначала подключил бы jconsole к Вашему приложению, чтобы определить, является ли это пространство permgen или просто память "кучи", и затем продолжите выяснять, где утечка. Можно ли дать нам еще некоторую информацию? Что продолжается в Вашем приложении, когда память растет?

Если бы Вы относительно плохо знакомы с диагностированием этого вида проблемы, я рекомендовал бы jprofiler. Можно загрузить версию полностью функционального испытания и взять снимки памяти для наблюдения, какие объекты находятся в памяти. Можно использовать эту информацию для выяснения, какие объекты являются источником утечки.

0
ответ дан 3 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: