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

2025 年 3 月 11 日
 zhazhibao

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

3654 次点击
所在节点    程序员
13 条回复
freemoon
2025 年 3 月 11 日
卡的时候没看内存占用?
valord577
2025 年 3 月 11 日
具体情况还是得拿出日志和 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
2025 年 3 月 11 日
1. GC 回收机制
2. 其他程序占用了硬盘读写
chenxiankong
2025 年 3 月 11 日
1. 更新最新版
2. 禁用 metal ,用 opengl
wsbqdyhm
2025 年 3 月 12 日
我也是同款,内存常年 48+,就是 ps+lrc+chrome 十多个标签 wx+其他十来个 app 小应用开着,后台一大堆东西没细看,好像有个 icopy 占用内存很多,准备卸了
EeveeRibbon
2025 年 3 月 12 日
@valord577 compiler 拼错了吗?
300
2025 年 3 月 12 日
@valord577 应该再加个 NextGeneration
C02TobNClov1Dz56
2025 年 3 月 12 日
@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
2025 年 3 月 12 日
@chengyiqun 用 AI 分析了一下这个配置,好像有点问题。
C02TobNClov1Dz56
2025 年 3 月 12 日
@wang93wei 有什么问题, 我现在用这个配置, 非常流畅啊
INCerry
2025 年 3 月 12 日
这是我的配置,仅供参考,内存够的话可以再给足一些
-Xms6G
-Xmx6G
-XX:MetaspaceSize=512m
-XX:+TieredCompilation
-XX:SoftRefLRUPolicyMSPerMB=512
-XX:CICompilerCount=4
-XX:+UseStringDeduplication
-XX:+UnlockExperimentalVMOptions
-XX:+UseShenandoahGC
-XX:ShenandoahGCHeuristics=compact
julyclyde
2025 年 3 月 13 日
我其实觉得,是不是应该 heap 设置小一点,压迫 GC 更频繁的进行工作?
这样其实可以减少每次的工作量
julyclyde
2025 年 3 月 13 日
其实我也挺喜欢 pycharm 的。但是我不喜欢 java
于是戒了

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

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

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

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

© 2021 V2EX