今天在IDEA 中启用了一个插件,等待重启之后卡在启动界面。
就像这样(长得花里胡哨的):
机智的我打开任务管理器查看,IDEA的进程内存占用900M左右,CPU占用率为0,磁盘读写速度0。按照国际惯例,只有启动成功了啥事没干才会这样,可是界面明显是卡死了,故,找日志吧。
IDEA 的默认日志路径在 “C:\Users<用户名>\AppData\Local\JetBrains\IntelliJIdea<版本>\log”
拖到最下面发现如下内容
2021-07-02 22:25:32,111 [ 33975] ERROR - #com.intellij.util.SVGLoader - Recursive update
java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1760)
at org.jetbrains.mvstore.MVStore.getChunk(MVStore.java:1376)
at org.jetbrains.mvstore.MVStore.readPage(MVStore.java:2607)
at org.jetbrains.mvstore.NonLeafPage.getChildPage(NonLeafPage.java:62)
at org.jetbrains.mvstore.Page.get(Page.java:205)
at org.jetbrains.mvstore.MVMap.get(MVMap.java:372)
at org.jetbrains.mvstore.MVStore.lambda$getChunk$4(MVStore.java:1378)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at org.jetbrains.mvstore.MVStore.getChunk(MVStore.java:1376)
at org.jetbrains.mvstore.MVStore.readPage(MVStore.java:2607)
at org.jetbrains.mvstore.NonLeafPage.getChildPage(NonLeafPage.java:62)
at org.jetbrains.mvstore.Page.get(Page.java:205)
at org.jetbrains.mvstore.MVMap.get(MVMap.java:372)
at org.jetbrains.mvstore.MVStore.lambda$getChunk$4(MVStore.java:1378)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at org.jetbrains.mvstore.MVStore.getChunk(MVStore.java:1376)
at org.jetbrains.mvstore.MVStore.readPage(MVStore.java:2607)
at org.jetbrains.mvstore.NonLeafPage.getChildPage(NonLeafPage.java:62)
at org.jetbrains.mvstore.NonLeafPage.getPrependCursorPos(NonLeafPage.java:194)
at org.jetbrains.mvstore.Cursor.traverseDown(Cursor.java:163)
at org.jetbrains.mvstore.Cursor.<init>(Cursor.java:40)
at org.jetbrains.mvstore.MVMap.cursor(MVMap.java:617)
at org.jetbrains.mvstore.MVMap.cursor(MVMap.java:604)
at org.jetbrains.mvstore.MVMap.cursor(MVMap.java:592)
at org.jetbrains.mvstore.MVStore.readStoreHeader(MVStore.java:922)
at org.jetbrains.mvstore.MVStore.<init>(MVStore.java:450)
at org.jetbrains.mvstore.MVStore$Builder.openOrNewOnIoError(MVStore.java:3996)
at com.intellij.ui.svg.SvgCacheManager.<init>(SvgCacheManager.java:59)
at com.intellij.util.SVGLoader$SvgCache.<clinit>(SVGLoader.java:84)
at com.intellij.util.SVGLoader.load(SVGLoader.java:217)
at com.intellij.util.ImageLoader.loadByDescriptorWithoutCache(ImageLoader.java:261)
at com.intellij.util.ImageLoader.loadByDescriptor(ImageLoader.java:227)
at com.intellij.util.ImageLoader.loadImage(ImageLoader.java:152)
at com.intellij.openapi.util.IconLoader$ResolvedImageDataResolver.loadImage(IconLoader.java:1057)
at com.intellij.openapi.util.IconLoader$CachedImageIcon.loadImage(IconLoader.java:936)
at com.intellij.openapi.util.IconLoader$ScaledIconCache.getOrScaleIcon(IconLoader.java:1005)
at com.intellij.openapi.util.IconLoader$CachedImageIcon.getRealIcon(IconLoader.java:824)
at com.intellij.openapi.util.IconLoader$CachedImageIcon.getIconWidth(IconLoader.java:752)
at com.intellij.ui.AppUIUtil.scaleIconToSize(AppUIUtil.java:185)
at com.intellij.ui.AppUIUtil.loadApplicationIcon(AppUIUtil.java:181)
at com.intellij.ui.AppUIUtil.loadApplicationIcon(AppUIUtil.java:152)
at com.intellij.ide.b.j.U.a(U.java:307)
at com.intellij.ide.b.j.U.a(U.java:240)
at com.intellij.ide.b.j.F.a(F.java:95)
at com.intellij.ide.b.j.F.<init>(F.java:50)
at com.intellij.ide.b.j.s.<init>(s.java:251)
at com.intellij.ide.b.j.L.a(L.java:52)
at com.intellij.ide.b.j.L.a(L.java:45)
at com.intellij.ide.b.c.aI.a(aI.java:322)
at com.intellij.ide.b.j.g.a(g.java:215)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:303)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:419)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
2021-07-02 22:25:32,119 [ 33983] ERROR - #com.intellij.util.SVGLoader - IntelliJ IDEA 2021.1.2 Build #IU-211.7442.40
2021-07-02 22:25:32,126 [ 33990] ERROR - #com.intellij.util.SVGLoader - JDK: 11.0.11; VM: Dynamic Code Evolution 64-Bit Server VM; Vendor: JetBrains s.r.o.
2021-07-02 22:25:32,126 [ 33990] ERROR - #com.intellij.util.SVGLoader - OS: Windows 10
2021-07-02 22:25:32,128 [ 33992] WARN - #com.intellij.idea.Main -
java.lang.reflect.InvocationTargetException
at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1373)
at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1348)
at com.intellij.idea.StartupUtil.runInEdtAndWait(StartupUtil.java:845)
at com.intellij.idea.StartupUtil$1.invokeAndWait(StartupUtil.java:305)
at com.intellij.util.ui.EdtInvocationManager.invokeAndWaitIfNeeded(EdtInvocationManager.java:152)
at com.intellij.ide.b.j.g.a(g.java:209)
at com.intellij.ide.b.c.aI.a(aI.java:317)
at com.intellij.ide.b.c.aq.c(aq.java:182)
at com.intellij.ide.b.c.aq.a(aq.java:81)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.intellij.idea.MainImpl.start(MainImpl.java:96)
at com.intellij.idea.StartupUtil.startApp(StartupUtil.java:310)
at com.intellij.idea.StartupUtil.prepareApp(StartupUtil.java:250)
at com.intellij.ide.plugins.MainRunner.lambda$start$1(MainRunner.java:41)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.NullPointerException
at com.intellij.util.SVGLoader.load(SVGLoader.java:217)
at com.intellij.util.ImageLoader.loadByDescriptorWithoutCache(ImageLoader.java:261)
at com.intellij.util.ImageLoader.loadByDescriptor(ImageLoader.java:227)
at com.intellij.util.ImageLoader.loadImage(ImageLoader.java:152)
at com.intellij.openapi.util.IconLoader$ResolvedImageDataResolver.loadImage(IconLoader.java:1057)
at com.intellij.openapi.util.IconLoader$CachedImageIcon.loadImage(IconLoader.java:936)
at com.intellij.openapi.util.IconLoader$ScaledIconCache.getOrScaleIcon(IconLoader.java:1005)
at com.intellij.openapi.util.IconLoader$CachedImageIcon.getRealIcon(IconLoader.java:824)
at com.intellij.openapi.util.IconLoader$CachedImageIcon.getIconWidth(IconLoader.java:752)
at com.intellij.ui.AppUIUtil.scaleIconToSize(AppUIUtil.java:185)
at com.intellij.ui.AppUIUtil.loadApplicationIcon(AppUIUtil.java:181)
at com.intellij.ui.AppUIUtil.loadApplicationIcon(AppUIUtil.java:152)
at com.intellij.ide.b.j.U.a(U.java:307)
at com.intellij.ide.b.j.U.a(U.java:240)
at com.intellij.ide.b.j.F.a(F.java:95)
at com.intellij.ide.b.j.F.<init>(F.java:50)
at com.intellij.ide.b.j.s.<init>(s.java:251)
at com.intellij.ide.b.j.L.a(L.java:52)
at com.intellij.ide.b.j.L.a(L.java:45)
at com.intellij.ide.b.c.aI.a(aI.java:322)
at com.intellij.ide.b.j.g.a(g.java:215)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:303)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:419)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
复制代码
看起来像是跟SVG有关?
闲来无事搜一搜,哎,还真有。
这老哥的错误看起来我跟这个类似,那就尝试抄一下作业。
emmmm,要我删掉这个 cache 目录,他这是个 mac的路径吧,对应到Windows就是”C:\Users<用户名>\AppData\Local\JetBrains\IntelliJIdea<版本>”。
先给“IntelliJIdea2021.1”目录改成“IntelliJIdea2021.1_b”,然后重启,嘿,它就好了。
观察目录变化,IDEA 在“JetBrains”目录下创建了一个“IntelliJIdea2021.1目录”,里面有个0KB的“icons-v2.db”文件,而旧的“IntelliJIdea2021.1_b”文件却是 38388KB,难道是这玩意损坏了?
抱着尝试的心态,把新的“IntelliJIdea2021.1”删掉,“IntelliJIdea2021.1_b”改成“IntelliJIdea2021.1”,删掉“icons-v2.db”,然后启动 IDEA。
果然,又可以愉快的玩耍了。
那么“icons-v2.db”究竟是怎么损坏的呢?我想可能是由于太阳高能粒子轰击我的 CPU 导致某一位突变而写坏了文件罢。
参考链接: