Mat*_*tic 6 java heap jvm heap-memory intellij-idea
这里和这里已经有类似的问题,但是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上面链接中提到的建议.第一个链接的答案实际上是错误的/过时的,但是2条评论链接到这里和这里看起来很有希望的文章.问题是,我已经尝试了所提到的所有不同的垃圾收集器,并且仍然看到上面显示的类似(不相同)的堆大小.
如何减少分配的堆大小(橄榄绿)以更准确地反映实际使用情况(蓝色)?垃圾收集不应该降低堆大小,而不是像目前那样增加它.
我已经尝试配置我的idea64.exe.vmoptions如下:
根据上面的最后一个链接,它声称
只有Serial GC和G1将未使用的内存释放到OS
它甚至可以直观地显示堆的减少方式.然而,我没有运气,并尝试了以下所有方面:发生了什么?
-XX:+UseSerialGC
和
-XX:-UseSerialGC
和
-XX:+UseG1GC
Run Code Online (Sandbox Code Playgroud)
和
-XX:-UseG1GC
Run Code Online (Sandbox Code Playgroud)
和
Both of the above together, with and without ("+/-")
Run Code Online (Sandbox Code Playgroud)
和
-XX:-UseAdaptiveSizePolicy
-XX:-UseParallelGC
Run Code Online (Sandbox Code Playgroud)
和
-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
Run Code Online (Sandbox Code Playgroud)
和
-server
-Xms128m
-Xmx512m
-XX:MaxPermSize=250m
-XX:ReservedCodeCacheSize=150m
-XX:UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
Run Code Online (Sandbox Code Playgroud)
编辑:
重申为什么这不是重复,另一个"答案"是5岁,甚至没有提到任何现代垃圾收集器.唯一有用的部分是注释中的两个链接,指向要使用的不同JVM参数,所有这些都是我尝试过但没有成功的.我已经完全尝试了这些解决方案,但仍然没有结果.这正是我敦促你把它视为独特的原因,因为其他人可能会遇到同样的循环挫败感.
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |