MacBook m1 max 64g 内存,为啥我用 PyCharm 一段时间后会卡??

175 天前
 zhazhibao

Maximum Heap Size 我都调整为 10G ,居然用一段时间后打字都会卡顿?

2583 次点击
所在节点    程序员
13 条回复
lasuar
175 天前
卡的时候没看内存占用?
valord577
175 天前
具体情况还是得拿出日志和 jvm logs 来分析 以下只是猜想:

1. java 运行期间会做 jit 储存 jit 也有个 size 当这个满了后 会导致卡顿
2. 默认的 gc 在回收内存时 会导致卡顿

下面是我的 idea.vmoptions 仅供参考

-Xms1024m
-Xmx2048m
-XX:+UseZGC
-XX:SoftRefLRUPolicyMSPerMB=0
-Dfile.encoding=UTF-8
-Djava.complier=NONE
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:+IgnoreUnrecognizedVMOptions
-XX:+UnlockDiagnosticVMOptions
-ea
-Dsun.io.useCanonCaches=false
-Dsun.java2d.metal=true
-Djbr.catch.SIGABRT=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-Dapple.awt.application.appearance=system

-Dnosplash=true

-XX:ErrorFile=$HOME/Downloads/java_error_in_idea_%p.log
-XX:HeapDumpPath=$HOME/Downloads/java_error_in_idea.hprof
ugpu
175 天前
1. GC 回收机制
2. 其他程序占用了硬盘读写
chenxiankong
175 天前
1. 更新最新版
2. 禁用 metal ,用 opengl
wsbqdyhm
175 天前
我也是同款,内存常年 48+,就是 ps+lrc+chrome 十多个标签 wx+其他十来个 app 小应用开着,后台一大堆东西没细看,好像有个 icopy 占用内存很多,准备卸了
qiaofanxing
175 天前
@valord577 compiler 拼错了吗?
winterbells
174 天前
@valord577 应该再加个 NextGeneration
C02TobNClov1Dz56
174 天前
@valord577 小内存用 ZGC 下不会比 G1 明显优势的吧?

下面是我的 idea.vmoptions 配置参考

# 忽略未识别参数
-XX:+IgnoreUnrecognizedVMOptions

# 元空间大小
-XX:MetaspaceSize=512M
-XX:MaxMetaspaceSize=1G

# 增加堆内存大小
-Xms2g
-Xmx6g

# 调整代码缓存大小
-XX:InitialCodeCacheSize=512m
-XX:ReservedCodeCacheSize=512m
# 调整 JIT 编译器的参数
-XX:CICompilerCount=2
-XX:TieredStopAtLevel=1
-XX:MaxInlineLevel=3
-XX:Tier4MinInvocationThreshold=100000
-XX:Tier4InvocationThreshold=110000
-XX:Tier4CompileThreshold=120000
-XX:-DontCompileHugeMethods
# 关闭热度衰减
-XX:-UseCounterDecay
# 编译阈值,被调用多少次后,就编译为机器码,在 client 下默认是 933 server 默认是 140
-XX:OnStackReplacePercentage=933

#立即分配内存
-XX:+AlwaysPreTouch

# int 缓存
-XX:AutoBoxCacheMax=20000

# gc 收集器
# 使用 G1 收集器
-XX:+UseG1GC
#G1 开启字符串去重
-XX:+UseStringDeduplication
#GC 最大暂停时间(毫秒, 默认 200)
#低配置机器( 8GB 内存以下): 设置 200ms 或更高,以减少 GC 的频率,避免频繁触发
#高配置机器( 16GB 内存或以上): 设置为 100ms ,以追求更流畅的用户体验。
#小型项目:100ms 足够,保证交互流畅。
#大型项目(超过 10 万行代码):建议设置为 150ms 到 200ms ,避免频繁的 GC 暂停。
-XX:MaxGCPauseMillis=100


-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow

-Dsun.io.useCanonCaches=false
-Dsun.java2d.metal=true
-Djbr.catch.SIGABRT=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof
-XX:CompileCommand=exclude,com/intellij/openapi/vfs/impl/FilePartNodeRoot,trieDescend


# 解决一些小问题
-Dide.no.platform.update=true
-Djava.net.preferIPv4Stack=true
-Dfile.encoding=UTF-8

--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
wang93wei
174 天前
@chengyiqun 用 AI 分析了一下这个配置,好像有点问题。
C02TobNClov1Dz56
174 天前
@wang93wei 有什么问题, 我现在用这个配置, 非常流畅啊
INCerry
174 天前
这是我的配置,仅供参考,内存够的话可以再给足一些
-Xms6G
-Xmx6G
-XX:MetaspaceSize=512m
-XX:+TieredCompilation
-XX:SoftRefLRUPolicyMSPerMB=512
-XX:CICompilerCount=4
-XX:+UseStringDeduplication
-XX:+UnlockExperimentalVMOptions
-XX:+UseShenandoahGC
-XX:ShenandoahGCHeuristics=compact
julyclyde
173 天前
我其实觉得,是不是应该 heap 设置小一点,压迫 GC 更频繁的进行工作?
这样其实可以减少每次的工作量
julyclyde
173 天前
其实我也挺喜欢 pycharm 的。但是我不喜欢 java
于是戒了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1117622

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX