类似地询问here和here,但JVM参数的更改都没有引出我同样的解决方案。我只是想减少我的JVM未使用的堆大小,以便它更接近地反映实际使用情况(将其释放到操作系统)。我一直在使用YourKit来分析内存使用情况,它通常如下所示:
我在Windows 7 64位,8 GB RAM上运行intellIj IDEA Community Edition 64位。我已根据上面链接中提到的建议编辑了.vmoptions
文件:C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 14.1.5\bin\idea64.exe.vmoptions
。第一个链接的答案实际上是错误的/过时的,但有两条评论链接到找到here和here的文章似乎很有希望。问题是,我已经尝试了所提到的所有不同的垃圾收集器,并且仍然看到上面显示的类似(不完全相同)的堆大小。
如何减少分配的堆大小(橄榄绿)以更准确地反映实际使用情况(蓝色)?垃圾收集不应该降低堆大小,而不是像目前那样增加它。
我尝试按如下方式配置idea64.exe.vmoptions:
根据上面的最后一个链接,它声称
只有串行GC和G1将未使用的内存释放到操作系统
它甚至直观地显示了堆的减少方式。然而,我没有运气,并尝试了以下所有方面:发生了什么?
-XX:+UseSerialGC
和
-XX:-UseSerialGC
和
-XX:+UseG1GC
和
-XX:-UseG1GC
和
Both of the above together, with and without ("+/-")
和
-XX:-UseAdaptiveSizePolicy
-XX:-UseParallelGC
和
-XX:UseConcMarkSweepGC
和
-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=225m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
和
-server
-Xms128m
-Xmx512m
-XX:MaxPermSize=250m
-XX:ReservedCodeCacheSize=150m
-XX:UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
修改
重申为什么这不是重复,另一个“答案”是5岁,甚至没有提到任何现代垃圾收集器。唯一有用的部分是注释中的两个链接,指向要使用的不同JVM参数,所有这些都是我尝试过但没有成功的。我已经完全尝试了这些解决方案,但仍然没有结果。这正是我敦促你把它视为独特的原因,因为其他人可能会遇到同样的循环挫折。
答案 0 :(得分:2)
据我所知,这些仅适用于编辑本身。您应该在以下位置插入这些设置:
运行>编辑配置...> VM选项
如果将选项置于程序vmoption中,则选项应该有效。