redhat-developer / vscode-java

Java Language Support for Visual Studio Code
Eclipse Public License 2.0
2.07k stars 433 forks source link

The Java Language Server encountered an OutOfMemory error. Some language features may not work due to limited memory. #3779

Open rohithiresheddi opened 3 days ago

rohithiresheddi commented 3 days ago

Type: Bug

Hi Team,

Laguage Support for Java by Red Hat fails when .m2/repository directory is included as referenced library for the Java project.

Expected: No error. Actual: VS Code becomes unresponsive and eventually plugin fails with OutOfMemory error.

Thanks

Extension version: 1.34.0 VS Code version: Code 1.93.1 (38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40, 2024-09-11T17:20:05.685Z) OS version: Darwin arm64 23.5.0 Modes:

System Info |Item|Value| |---|---| |CPUs|Apple M1 Pro (10 x 2400)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off| |Load (avg)|39, 50, 56| |Memory (System)|32.00GB (0.23GB free)| |Process Argv|--crash-reporter-id 3bd13f8b-038c-47ad-bb2e-22897dca9b90| |Screen Reader|no| |VM|0%|
A/B Experiments ``` vsliv368:30146709 vspor879:30202332 vspor708:30202333 vspor363:30204092 vscod805cf:30301675 binariesv615:30325510 vsaa593:30376534 py29gd2263:31024239 c4g48928:30535728 azure-dev_surveyone:30548225 962ge761:30959799 pythongtdpath:30769146 welcomedialogc:30910334 pythonnoceb:30805159 asynctok:30898717 pythonmypyd1:30879173 h48ei257:31000450 pythontbext0:30879054 accentitlementst:30995554 dsvsc016:30899300 dsvsc017:30899301 dsvsc018:30899302 cppperfnew:31000557 dsvsc020:30976470 pythonait:31006305 dsvsc021:30996838 jg8ic977:31013176 a69g1124:31058053 dvdeprecation:31068756 dwnewjupytercf:31046870 newcmakeconfigv2:31071590 impr_priority:31102340 nativerepl2:31139839 refactort:31108082 pythonrstrctxt:31112756 flighttreat:31134774 wkspc-onlycs-t:31132770 nativeloc2:31134642 wkspc-ranged-c:31125598 cf971741:31144450 pme_test_c:31118331 defaultse:31146405 ei213698:31121563 iacca1:31144502 5fd0e150:31146321 ```
rgrunber commented 2 days ago

What is the size of your .m2/repository ? Also, do you have access to Java : Open Language Server Log File (from the command palette) to post any errors you find there ? It does seem to work, though it just takes a really long time (~2.5min) to get a response. Using an unmanaged project :

(I disabled shared indexing to better measure the final size of the index, and it was around 1.7GB.) .vscode/settings.json

{
    "java.sharedIndexes.enabled": "off",
    "java.project.referencedLibraries": [
        "~/.m2/repository/**/*.jar"
    ],
}
$ du -sh ~/.m2/repository/
2.6G    /home/rgrunber/.m2/repository/
[Trace - 11:43:52] Received response 'workspace/symbol - (26)' in 152818ms.

I did occasionally notice this error :

[Error - 10:49:50] Sep. 26, 2024, 10:49:50 a.m. An internal error occurred during: "Update classpath Job".
null
java.lang.StackOverflowError
    at org.eclipse.jdt.internal.core.JavaModelCache.peekAtInfo(JavaModelCache.java:192)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4313)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.ElementCache.close(ElementCache.java:59)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry(OverflowingLRUCache.java:289)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace(OverflowingLRUCache.java:189)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.setSpaceLimit(OverflowingLRUCache.java:384)
    at org.eclipse.jdt.internal.core.ElementCache.resetSpaceLimit(ElementCache.java:97)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:285)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:300)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4327)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.ElementCache.close(ElementCache.java:59)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry(OverflowingLRUCache.java:289)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace(OverflowingLRUCache.java:189)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.setSpaceLimit(OverflowingLRUCache.java:384)
    at org.eclipse.jdt.internal.core.ElementCache.resetSpaceLimit(ElementCache.java:97)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:285)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:300)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4327)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.ElementCache.close(ElementCache.java:59)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry(OverflowingLRUCache.java:289)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace(OverflowingLRUCache.java:189)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.setSpaceLimit(OverflowingLRUCache.java:384)
    at org.eclipse.jdt.internal.core.ElementCache.resetSpaceLimit(ElementCache.java:97)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:285)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:300)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4327)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.ElementCache.close(ElementCache.java:59)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry(OverflowingLRUCache.java:289)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace(OverflowingLRUCache.java:189)
    at org.eclipse.jdt.internal.core.OverflowingLRUCache.setSpaceLimit(OverflowingLRUCache.java:384)
    at org.eclipse.jdt.internal.core.ElementCache.resetSpaceLimit(ElementCache.java:97)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:285)
    at org.eclipse.jdt.internal.core.JavaModelCache.removeInfo(JavaModelCache.java:300)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4327)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.JavaModelManager.closeChildren(JavaModelManager.java:4169)
    at org.eclipse.jdt.internal.core.JavaModelManager.removeInfoAndChildren(JavaModelManager.java:4325)
    at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:158)
    at org.eclipse.jdt.internal.core.ElementCache.close(ElementCache.java:59)