无法理解Intellij IDEA的内存使用和管理

问题描述 投票:2回答:3

几年后我再次与IDEA合作,到目前为止我很开心。问题只是奇怪的内存使用行为和GC操作,而我正在处理的项目导致我的IDE冻结几秒钟,而GC正在完成它的工作。无论项目有多大,我都在努力,几天后内存使用量增加到500 MB(我的堆空间最大512 MB,实际上,我认为,它必须足够用于拥有大约100个java的Web项目文件)。在GC完成它的工作之后,我得到了400 MB的使用 - 没有收集 - 并且只有大约100 MB的堆免费,并且在几分钟内内存使用量增加了堆再次满了。

JVM version is 19.0-b09

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 536870912 (512.0MB)
   NewSize          = 178257920 (170.0MB)
   MaxNewSize       = 178257920 (170.0MB)
   OldSize          = 4194304 (4.0MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 16777216 (16.0MB)
   MaxPermSize      = 314572800 (300.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 145489920 (138.75MB)
   used     = 81242600 (77.4789810180664MB)
   free     = 64247320 (61.271018981933594MB)
   55.84070704004786% used
From Space:
   capacity = 16384000 (15.625MB)
   used     = 0 (0.0MB)
   free     = 16384000 (15.625MB)
   0.0% used
To Space:
   capacity = 16384000 (15.625MB)
   used     = 0 (0.0MB)
   free     = 16384000 (15.625MB)
   0.0% used
PS Old Generation
   capacity = 358612992 (342.0MB)
   used     = 358612992 (342.0MB)
   free     = 0 (0.0MB)
   100.0% used
PS Perm Generation
   capacity = 172621824 (164.625MB)
   used     = 172385280 (164.3994140625MB)
   free     = 236544 (0.2255859375MB)
   99.86296981776765% used

这是我的堆空间似乎。值得注意的是,Old Generation和Perm Generation使用了大约100%的空间。但我曾多次手动触发GC。问题是如何在不启动IDE的情况下让IDE在旧一代中扫描这些对象? (启动后内存使用量约为60MB -90 MB)我怎样才能知道这些是什么?有一些线程正在运行,可以在VisualVM中观看,如RMI TCP连接,RMI TCP接受,XML RPC Weblistener等,虽然我在IDE上什么都不做,他们仍然消耗内存甚至每秒5-10 MB。

$ uname -a
Linux bagdemir 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 21:21:01 UTC 2011 i686 GNU/Linux

$ java --version 
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Server VM (build 19.1-b02, mixed mode)

更新:内存配置:-Xms256m -Xmx512m -Xmn170m -XX:MaxPermSize = 300m

java jvm intellij-idea profiling memory-management
3个回答
2
投票

正确的方法是获得一个memory snapshot并将相应的票据提交给连接快照的JetBrains跟踪器。


7
投票

0
投票

过剩的内存使用持续到2019年4月2日这一天。默认情况下,IntelliJ IDEA Ultimate Edition默认启用了131个插件。

我关闭了大约50个插件。

转到文件>>设置>>插件来管理插件。然后单击“已安装”以查看已处于活动状态的插件。

© www.soinside.com 2019 - 2024. All rights reserved.