Моя фактическая проблема заключается в том, что в настоящее время netbeans использует около 4G (в соответствии с Activity Monitor на OS X) памяти. Я установил несколько вариантов ограничения памяти безрезультатно. из моего netbeans.conf
netbeans_default_options="-J-client -J-Xmx1G -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxMetaspaceSize=256m -J-XX:+UseConcMarkSweepGC -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true"
что я хотел бы знать, как я могу узнать, почему он использует эту большую память? какие шаги я должен предпринять, чтобы определить корневой источник проблемы.
(Меня больше интересует общий, чем конкретно небебет). Возможно, стоит отметить, что я программировал Java всего несколько месяцев и не знаю доступных для этого инструментов или каких вещей я должен проверять. (например, я добавил MaxMetaspaceSize сегодня, потому что понял, что это не ограничивается, думая, что это возможно, но я все еще не уверен, как проверить).
Вот некоторые вещи, которые я обнаружил из дампа кучи visualvm
File size: 364.7 MB Total bytes: 332,921,516 Total classes: 24,143 Total instances: 4,151,139 Classloaders: 3,272 GC roots: 65,185 Number of objects pending for finalization: 0
он показал график, который показал, что он зарезервировал приблизительно 600 М для кучи и 150 М для метапасмы. В то время монитор активности показывал около 2 Гб памяти. То, что я пытаюсь понять, - это использование всего 1G памяти. Если бы это было несколько сотен мегабайт, это было бы терпимо, но 2-4 ГБ RAM было половиной системной памяти (также отмечая, что оно не ведет себя таким образом в моем ящике Linux с теми же версиями). Я бы подумал, что где-нибудь от 800M-2G, вероятно, будет нормальным для java-среды IDE, и было бы терпимо, и я бы не стал расследовать это, используя остальную доступную память, без какой-либо заметной причины, которая заставляет меня хотеть чтобы узнать, что именно, и почему это резервирует это.
Обновление: это утечка памяти в Swing на OS X в JVM 8. Я не могу принять ответ, который не смог бы довести меня до точки определения причины проблемы в jdk 8.
JDK поставляется с инструментами. Запустите% JAVA_HOME%\bin\jvisualvm.exe и проверьте свой экземпляр. Вы должны иметь возможность выполнять heapdump и анализировать использование.