Я удивлен, что никто еще не упомянул известную кавычку Dijkstra, таким образом, здесь идет:
Моя точка сегодня - то, что, если мы хотим считать строки кода, мы не должны рассматривать их как "линии, продолженные", но как "потраченные строки": текущее расхожее мнение так глупо, что заказывает, которые рассчитывают на неправильную сторону бухгалтерской книги.
кавычка от статьи, названной" На жестокости действительно обучающей вычислительной науки ".
Я не думаю, что TaskManager специально показывает память кучи. Он включает всю память, которую программа использует в данный момент.
Для анализа памяти кучи вы можете использовать профилировщик (например, Yourkit) и посмотреть, соблюдается ли ограничение кучи -Xmx или нет. Это также поможет вам проанализировать интересующие вас части программы.
Эммм ... это не совсем так.
Хотя существует связь между -Xmx32m
и тем, что вы видите в диспетчере задач, это не один на один. Помните, что диспетчер задач сообщает не размер кучи, а всю память, потребляемую JVM, из которой ваш код является лишь подмножеством.
Вы видите сумму размера кучи и постоянной генерации. Вы можете настроить размер разрешения с помощью аргумента командной строки -XX: MaxPermSize. Например, будет установлено значение 128 м.
java -Xmx32m -XX:MaxPermSize=128m ...
Возможно, вы на самом деле не используете столько памяти, но JVM использует внешние библиотеки и тому подобное.
Чтобы проверить эту теорию, вы можете использовать класс Runtime для просмотра общей памяти и использовала память.
Попробуйте установить -Xmx128 и посмотрите, не возникнет ли ошибка OutOfMemoryError. Затем это должно подтвердить, что он, по крайней мере, настраивается.