2012-02-17 266 views
1

自从几年后我再次用IDEA开发,至今我感到非常高兴。 这个问题只是奇怪的内存使用行为和GC行动,而我正在处理项目,导致我的IDE冻结了几秒,而GC正在完成其工作。 无论项目有多大,我正在努力,几天后内存使用量增加到500 MB(我的堆空间最大为512 MB,实际上,我假设它必须足够用于具有ca 100的Web项目java文件)。在GC完成工作之后,我得到了400 MB的使用 - 没有收集 - 并且只有大约100 MB的空闲空间,并且在几分钟内,内存使用量增加了,堆又满了。无法理解Intellij IDEA的内存使用情况和管理

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 

这是我的堆空间的样子。老一代和烫发世代使用大约100%的空间是非常值得注意的。但我曾多次手动触发GC。问题是如何让IDE在老一代中扫描这些对象而无需启动IDE? (启动后内存使用量约为60MB-90MB)我怎么知道这些是什么?有一些线程可以在VisualVM中像RMI TCP连接,RMI TCP Accept,XML RPC Weblistener等一样在VisualVM中观看,尽管我对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) 

UPDATE: 内存配置: -Xms256m -Xmx512m -Xmn170m -XX:MaxPermSize参数=300米

回答

2

权的路要走是获得memory snapshot,并提交相应机票JetBrains的跟踪与快照连接。