Neulich erhielt ich nach einem Absturz meines MacBooks beim Versuch, ein Projekt in PhpStorm zu öffnen, eine frustrierende Fehlermeldung. Vielleicht kennst du das: Du bist mitten in der Arbeit, und plötzlich steht alles still.
Die Lösung war einfacher als gedacht: der Cache von PhpStorm musste geleert werden. In diesem Beitrag zeige ich dir, wie du das machst.
PhpStorm und andere JetBrains IDEs nutzen einen Cache und Indizes, um die Benutzererfahrung zu verbessern – schnelleres Laden, bessere Autocomplete-Vorschläge, das ganze Programm. Manchmal jedoch verursachen genau diese Caches Probleme, werden beschädigt oder bleiben hinter den aktuellen Projektänderungen zurück. Das kann zu seltsamen Fehlermeldungen bis hin zu Leistungseinbußen führen. Das Leeren des Caches zwingt PhpStorm dazu, diese Daten zu löschen und neu aufzubauen, was oft Wunder wirkt.
Folge diesen einfachen Schritten, um den PhpStorm-Cache zu leeren und dich schnell zurück in den Coding-Flow zu bringen:
Schließe PhpStorm
Bevor du irgendwelche Ordner anfässt, stelle sicher, dass PhpStorm nicht läuft.
Finde das Cache-Verzeichnis
Das Cache-Verzeichnis ist je nach Betriebssystem an verschiedenen Orten. Auf einem Mac findest du es unter ~/Library/Caches/JetBrains/PhpStormXXXX.X, wobei XXXX.X deine aktuelle Version von PhpStorm ist.
Lösche den Cache
Wenn du das Cache-Verzeichnis gefunden hast, lösche seinen Inhalt. Sei hier vorsichtig und stelle sicher, dass du wirklich nur den Cache leerst.
Starte PhpStorm neu
Nachdem du den Cache geleert hast, öffne PhpStorm erneut. Du wirst bemerken, dass es ein bisschen länger zum Laden braucht – das liegt daran, dass der Cache neu aufgebaut wird.
Wenn du den manuellen Weg scheust, PhpStorm bietet dir eine eingebaute Option, um den Cache zu leeren:
Das Leeren des Caches in PhpStorm ist ein schneller Fix für eine ganze Reihe von Problemen, besonders wenn du nach einem Absturz oder einer störrischen Fehlermeldung nicht mehr weiterkommst. Es ist ein einfacher Trick, der dir helfen kann, wieder geschmeidig zu arbeiten. Hab keine Angst, ihn auszuprobieren, wann immer PhpStorm sich merkwürdig verhält.
In meinem Fall sah die Fehlermeldung wie folgt aus:
java.lang.IllegalArgumentException: recordId(2140771) is not yet allocated: allocated ids are all < 1779902 at com.intellij.openapi.vfs.newvfs.persistent.dev.blobstorage.StreamlinedBlobStorageHelper.checkRecordIdExists(StreamlinedBlobStorageHelper.java:398) at com.intellij.openapi.vfs.newvfs.persistent.dev.blobstorage.StreamlinedBlobStorageOverMMappedFile.readRecord(StreamlinedBlobStorageOverMMappedFile.java:200) at com.intellij.openapi.vfs.newvfs.persistent.dev.blobstorage.StreamlinedBlobStorageHelper.readRecord(StreamlinedBlobStorageHelper.java:216) at com.intellij.openapi.vfs.newvfs.persistent.AttributesStorageOverBlobStorage.readAttributeValue(AttributesStorageOverBlobStorage.java:1026) at com.intellij.openapi.vfs.newvfs.persistent.AttributesStorageOverBlobStorage.readAttributeRaw(AttributesStorageOverBlobStorage.java:134) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSAttributeAccessor.readAttributeRaw(PersistentFSAttributeAccessor.java:72) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSTreeRawAccessor.mayHaveChildren(PersistentFSTreeRawAccessor.java:118) at com.intellij.openapi.vfs.newvfs.persistent.FSRecordsImpl.mayHaveChildren(FSRecordsImpl.java:662) at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.mayHaveChildren(PersistentFSImpl.java:2322) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findInPersistence(VirtualDirectoryImpl.java:172) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.doFindChild(VirtualDirectoryImpl.java:137) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:83) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:535) at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:51) at com.intellij.openapi.vfs.newvfs.VfsImplUtil.findFileByPath(VfsImplUtil.java:56) at com.intellij.openapi.vfs.impl.local.LocalFileSystemBase.findFileByPath(LocalFileSystemBase.java:119) at com.intellij.openapi.vfs.impl.VirtualFileManagerImpl.findByUrl(VirtualFileManagerImpl.java:344) at com.intellij.openapi.vfs.impl.VirtualFileManagerImpl.findFileByUrl(VirtualFileManagerImpl.java:331) at com.intellij.openapi.fileEditor.impl.HistoryEntry.parseEntry(HistoryEntry.java:201) at com.intellij.openapi.fileEditor.impl.HistoryEntry.createLight(HistoryEntry.java:75) at com.intellij.openapi.fileEditor.impl.UiBuilder$processFiles$2.invokeSuspend(EditorsSplitters.kt:947) at com.intellij.openapi.fileEditor.impl.UiBuilder$processFiles$2.invoke(EditorsSplitters.kt) at com.intellij.openapi.fileEditor.impl.UiBuilder$processFiles$2.invoke(EditorsSplitters.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78) at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264) at com.intellij.openapi.fileEditor.impl.UiBuilder.processFiles(EditorsSplitters.kt:923) at com.intellij.openapi.fileEditor.impl.UiBuilder.process(EditorsSplitters.kt:902) at com.intellij.openapi.fileEditor.impl.UiBuilder.process(EditorsSplitters.kt:915) at com.intellij.openapi.fileEditor.impl.UiBuilder$process$1.invokeSuspend(EditorsSplitters.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)