Language-tools: Penggunaan memori yang berat dari Server Bahasa

Dibuat pada 2 Jun 2020  ·  39Komentar  ·  Sumber: sveltejs/language-tools

Ini adalah semacam dokumentasi pengalaman saya dengan Svelte Language Server (SLS) yang menurut saya perlu diperhatikan.

Dalam proyek Svelte saya yang cukup besar, saya memutuskan untuk mencoba menggunakan ekstensi Svelte Atom (VS Code telah terbukti sama dalam hal masalah ini, yang masuk akal – ini bukan kesalahan editor). Setelah beberapa saat pengkodean, saya melihat penurunan kinerja yang parah dan sistem membeku. Ternyata proses SLS menggunakan RAM hingga 2 GB. Setelah memisahkan proyek, saya menemukan bahwa file yang menyebabkan konsumsi memori yang begitu besar adalah /jsconfig.json dan /__sapper__/* . Perlu dicatat bahwa pada saat saya memiliki pengembangan dan produksi yang dikompilasi, jadi folder __sapper__ berukuran dua kali lipat.

jsconfig.json memiliki bidang yang sangat menarik:

{
  "exclude": ["node_modules", "dist"]
}

Ternyata SLS menghormati bidang ini entah bagaimana, dalam hal itu:

  • menghapus jsconfig.json sama sekali membawa konsumsi memori ke yang dapat diterima (~350 MB)
  • mempertahankannya dengan cara ini memberikan penggunaan memori 2 GB yang konyol
  • menambahkan "__sapper__" ke dalam array pengecualian juga membuat konsumsi memori dapat diterima (sama seperti saat menghapus)

Pikiran saya tentang ini:

  • mengapa SLS dipengaruhi oleh sekelompok .js file dalam __sapper__ folder? (perhatikan bahwa menyalin file yang sama di __sapper__/dev/client tidak meningkatkan konsumsi memori, jadi itu tidak hanya meningkat secara linier sehubungan dengan jumlah file)
  • apakah semua memori yang dikonsumsi ini benar-benar diperlukan?
  • bagaimana tepatnya jsconfig.json memengaruhi SLS?
  • mungkin entah bagaimana harus dibuat lebih jelas bagaimana mengubah konsumsi memori jika menjadi tidak terkendali, mungkin dengan mendokumentasikan penggunaan jsconfig.json

Saya tidak benar-benar tahu apa yang harus saya lakukan tentang masalah ini, berharap untuk semacam diskusi dan mungkin peningkatan dokumentasi, tetapi jangan ragu untuk menutup ini.

bug documentation

Semua 39 komentar

Server bahasa menggunakan layanan bahasa TypeScript di belakang layar. Saya kira memori tinggi adalah karena TypeScript mencoba mengurai semua file yang dikonfigurasi , dalam jsconfig.json , untuk dimasukkan. Karena layanan bahasa TypeScript dalam proses yang sama dengan server bahasa Svelte, saya tidak tahu berapa banyak memori yang digunakan oleh layanan bahasa TypeScript.

Saya ingin tahu seberapa besar folder __sapper__ . Proyek saya memiliki jsconfig.json dan disetel untuk menyertakan sekitar 200 file sumber js dan hanya menggunakan 150MB. Tidak dapat membayangkan bagaimana folder __sapper__ menyebabkan server bahasa menggunakan lebih dari 2GB memori.

Untuk referensi, inilah repo proyek saya: b339c2a17e @ Innopoints/frontend

Saya baru saja mengkloningnya dan menjalankan server dan mendapatkan yang berikut:

  • 490 MB ketika folder __sapper__ berisi dev build
  • 730 MB ketika folder __sapper__ berisi build dev dan produksi

Anda dapat mencoba mengompilasinya sendiri untuk mencoba mereproduksi ini (perhatikan bahwa server dev tidak akan berjalan tanpa variabel lingkungan, tetapi tidak apa-apa, karena kompilasi akan tetap berhasil). Instal deps dengan Benang, kompilasi dengan yarn dev dan kemudian buka file .svelte di VS Code.

Juga, jika ada bedanya, saya menggunakan VSCodium, sebagai lawan dari Kode VS biasa


Apakah ada cara untuk mengarahkan SLS agar hanya memindai file .svelte ? Saya tidak berpikir file .js/.ts benar-benar relevan dengan analisis kode Svelte. Terutama yang tidak langsung diimpor, seperti folder __sapper__ .

Jika tidak, saya ingin tahu bagaimana SLS berperilaku tanpa adanya jsconfig.json . Seperti yang saya sebutkan, menghapus file itu mengembalikan konsumsi memori ke 150 MB yang memadai. Dan itu pasti layak disebutkan di README, karena bagi saya, orang yang tidak akrab dengan cara TS, itu adalah kejutan yang sangat besar bahwa file jsconfig.json yang tampaknya sama sekali tidak terkait menyebabkan perbedaan yang begitu dramatis.

Ya, kita harus menambahkan sesuatu ke dokumentasi tentang itu.

Pemindaian file .ts / .js diperlukan untuk memberi Anda intellisense dari langsing hingga file-file ini. Anda tidak akan mendapatkan pelengkapan otomatis/pergi ke definisi/arahkan info ini, jika tidak disertakan.

Sepertinya folder __sapper__ tidak banyak berguna untuk IntelliSense, jadi mungkin pengabaian ini bahkan dapat disetel secara default dan diganti jika perlu

Saya masih mendapatkan penggunaan memori hingga 2 GB, tetapi sangat sulit untuk dilacak. Terasa seperti meledak secara acak saat saya mengedit sumber Svelte dalam proyek itu. Apa yang bisa Anda rekomendasikan untuk mengurangi konsumsi memori?

Server bahasa mendeteksi file langsing dan akan menjalankan pohon file dari itu. Itu juga akan menghormati hal-hal di jsconfig/tsconfig. Dari pengalaman Anda ("meledak", bukan "terus meningkat"), tebakan saya sekarang adalah bahwa entah bagaimana server sampai pada titik di mana ia memuat banyak file yang tidak terkait yang seharusnya tidak ia lakukan.
Anda dapat melihat Output->Svelte VSCode dan melihat apakah ada sesuatu yang mencurigakan (atau cukup salin di sini)

Ini berperilaku untuk saya hari ini, tetapi kemarin saya harus secara manual mematikan proses alat bahasa langsing setelah menutup VS Code (tidak menanggapi SIGTERM).

Saya tidak punya banyak lagi untuk ditambahkan saat ini.

Seberapa besar proyek Anda? Apakah Anda memiliki tsconfig.json atau jsconfig.json ?

@dummdidumm Tidak lebih besar dari template pencari ranjau. Saya memiliki tsconfig.json dasar yang tidak berubah sejak saya mengalami masalah.

{
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules/*"
  ],
  "compilerOptions": {
    "target": "es2015",
    "module": "es2015",
    "types": [
      "svelte"
    ]
  }
}

Jadi Anda dan @illright menggunakan pencari ranjau dan memiliki penggunaan memori yang besar. Mungkin sebuah pola.. harus menyelidiki ini.

@dummdidumm Beri tahu saya jika saya dapat membantu penyelidikan dengan cara apa pun. Mungkin ada cara untuk menjalankan SLS melalui baris perintah atau apa pun yang lebih dapat direproduksi daripada hanya mengutak-atik editor?

Svelte (Svelte Language Server) stderr FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Svelte (Svelte Language Server) stderr  1: 0x55d7276c33b6 node::Abort() [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  2: 0x55d7276c3985  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  3: 0x55d723b01817  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  4: 0x55d723b017b4  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  5: 0x55d723b6f716  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  6: 0x55d723b6e538  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  7: 0x55d723b6b626 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  8: 0x55d723b7678e  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr  9: 0x55d723f210b7 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr 10: 0x55d72410e1be  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) stderr 11: 0x55d72440b62b  [/usr/lib/electron5/electron]
Svelte (Svelte Language Server) rpc.onClose The RPC connection closed unexpectedly

Baru saja saya kembali menekan 2.1GB dan SIGKILL SLS. Di atas dapat dilihat di DevTools of Atom

Oh tunggu, Anda menggunakan Atom? Ekstensi mana yang Anda gunakan?

@dummdidumm Saya memiliki Atom (dengan ide-svelte , secara manual menabrak versi server bahasa) dan VSCodium (dengan Svelte Beta).

Berikut adalah output dari tab Svelte VSCodium ketika ledakan terjadi. Tampaknya telah membunuhnya dan pulih, tetapi pembekuan itu masih ada.

Oke saya mengerti, terima kasih.

Sepertinya ledakan terjadi segera setelah startup.

Jika Anda akan menyelidiki sendiri sedikit dengan ekstensi secara lokal, itu akan sangat bagus! Untuk mengatur ekstensi secara lokal untuk VSCode(ium, semoga saja sama), pertama-tama hapus instalannya lalu atur secara lokal seperti yang dijelaskan di sini . Yang ingin Anda fokuskan adalah layanannya . Dugaan saya adalah bahwa pada titik tertentu ia mendapat terlalu banyak file yang harus ditangani, yang dapat dilihat di sini . Jika Anda menambahkan log konsol di atas (baris 72) yang mencatat file (mungkin dalam interval 10 detik, seperti setInterval(() => console.log(JSON.stringify(Array.from(new Set([...files, ...snapshotManager.getFileNames(), ...svelteTsxFiles]), null , 3)), 10000) ) yang dapat membantu mendapatkan beberapa wawasan.

Jadi sepertinya snapshotManager.getFileNames() berisi banyak file yang tidak seharusnya ditonton menurut jsconfig.json . Itu juga menanggapi perubahan file, karena tidak memuat apa pun dari Sapper hingga build terjadi, tetapi sejak saat itu, file __sapper__/**/*.js mengisi memori

Oke, saya kira itu sumber masalahnya. Ini menjelaskan ledakan tiba-tiba karena semua file baru ditambahkan ke daftar pelacakan.

Ya, mungkin itu saja. Saya pikir kita perlu menyesuaikan bagaimana TypescriptPlugin menangani ts/js-onWatchedFilesChange. Mungkin lakukan seperti yang dilakukan vetur dan hanya menghapus barang lama, bukan menambahkan yang baru. Atau tambahkan beberapa jalur tebakan terbaik seperti __sapper__ / node_modules / dist yang harus diabaikan.

Saya akan mencoba melakukan ini.

Solusi yang buruk sampai masalah ini diperbaiki: temukan direktori ekstensi Svelte Anda, buka node_modules/svelte-language-server/dist/src/plugins/typescript/service.js dan komentari snapshotManager.getFileNames() :

Baris 69:

// before:
return Array.from(new Set(__spreadArrays(files, snapshotManager.getFileNames(), svelteTsxFiles)));

// after:
return Array.from(new Set(__spreadArrays(files/*, snapshotManager.getFileNames() */, svelteTsxFiles)));

Anda kehilangan beberapa IntelliSense, tetapi mempertahankan penyorotan sintaks dan setidaknya kinerjanya tidak turun secara acak. Dan jika Anda seperti saya, itu seharusnya cukup baik untuk bertahan :)

Melengkapi apa yang dikatakan @illright . biasanya terletak di ~/.vscode/extensions atau %userprofile%\.vscode \extensions\ di windows.

Solusi lain adalah pergi ke node_modules/svelte-language-server/dist/src/plugins/typescript/TypeScriptPlugin.js
Tambahkan baris berikut ke Baris 237 di mana onWatchFileChanges mulai

        if (/node_modules|__sapper__|dist/.test(fileName)) {
            return;
        }

metode ini adalah sumber masalahnya

Saya membuat PR #165. Bisakah kalian mencobanya di debug dan melihat apakah itu membaik?

@jasonlyu123 Ya, saya melihat peningkatan. Untuk sementara mengutak-atik proyek saya, konsumsi memori tetap terkendali. Pembuatan ulang Sapper juga tampaknya tidak memicu luapan memori.

Catatan: tetap terkendali = ~480 MB di puncak. Ini cukup rendah untuk tidak mempengaruhi sistem saya, tetapi Anda mungkin masih menganggap konsumsi memori yang tinggi ini. Saya punya 8 GB RAM di mesin saya.

Sakitnya nyata

Screen Shot 2020-06-11 at 8 17 22 am

Bahkan jika kita secara default mengecualikan __sapper__ , saya masih akan merekomendasikan menempatkan __sapper__ dalam pengecualian tsconfig.json/jsconfig.json Anda. Karena kami menggunakan bundel TypeScript kami sendiri. tsserver yang digunakan oleh vscode mungkin masih menyertakannya.

@illright bisakah Anda memeriksa dengan versi plugin terbaru? Harus lebih baik sekarang.

VS Code tampak mulus seperti biasa, memori yang digunakan sekitar 400 MB. Adakah kemungkinan pembaruan ke SLS dapat didorong ke ekstensi Atom? Itulah tempat di mana saya telah memperhatikan penurunan kinerja tempo hari

@orta sedang mentransfer plugin Atom ke repo ini. Setelah ini selesai, Anda harus mendapatkan pembaruan dari server bahasa.

@rob-balfre apakah penggunaan memori juga turun untuk Anda? Jika tidak, dapatkah Anda menentukan pengaturan Anda?

Saya mengalami masalah yang sama, menambahkan transpileOnly ke preprocessor TypeScript tampaknya sangat memperbaiki situasi.
Di svelte.config.js Anda
```
const sveltePreprocess = membutuhkan("svelte-preprocess");

modul.ekspor = {
praproses: sveltePreprocess({
naskah: {
transpileOnly: benar,
},
}),
// ...opsi langsing lainnya (opsional)
};

Saya perhatikan ini juga segera setelah memperbarui VSCode baru-baru ini. Proyek kecil tampaknya tidak menjadi masalah besar (walaupun menabung masih membutuhkan waktu sedikit lebih lama dari biasanya). Menyimpan akan hang, kemudian file akan disimpan dan diformat. Setelah itu sepertinya baik-baik saja. Dan ini hanya untuk proyek kecil. Ini seperti mencoba mengindeks folder proyek atau sesuatu dan menutup telepon? Proyek yang lebih besar dengan lebih banyak file, dll berakhir dengan hang dan error.

Penggunaan/kesalahan memori bagi saya terjadi saat menyimpan file Svelte. Itu hanya hang dan hang dengan pesan ini di kanan bawah:

Screen Shot 2020-06-16 at 9 46 46 PM

Inilah jendela Output Svelte:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x1143fdbe5 node::Abort() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 2: 0x1143fdc54 node::Abort() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 3: 0x11010b237 v8::internal::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 4: 0x11010b1d7 v8::internal::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 5: 0x1101500a5 v8::internal::Heap::StartIdleIncrementalMarking(v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 6: 0x110151719 v8::internal::Heap::StartIdleIncrementalMarking(v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 7: 0x11014e3ec v8::internal::Heap::CreateFillerObjectAt(unsigned long, int, v8::internal::ClearRecordedSlots, v8::internal::ClearFreedMemoryMode) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 8: 0x11014c002 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 9: 0x11015746a v8::internal::Heap::PromotedExternalMemorySize() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
10: 0x110157851 v8::internal::Heap::PromotedExternalMemorySize() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
11: 0x110358a5a v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
12: 0x1105e19bf v8::internal::RegExp::CompileForTesting(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::RegExpCompileData*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, bool) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
13: 0x110c23139 v8::internal::compiler::ZoneStats::ReturnZone(v8::internal::Zone*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
14: 0x110bf293d v8::internal::compiler::ZoneStats::ReturnZone(v8::internal::Zone*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]

<--- Last few GCs --->
al[45813:0x7fe18e004200]    47201 ms: Mark-sweep 4095.0 (4102.8) -> 4094.4 (4103.3) MB, 2004.1 / 0.0 ms  (+ 6.4 ms in 18 steps since start of marking, biggest step 5.3 ms, walltime since start of marking 2020 ms) (average mu = 0.146, current mu = 0.005) all[45813:0x7fe18e004200]    50534 ms: Mark-sweep 4095.7 (4103.3) -> 4095.3 (4104.5) MB, 2648.3 / 0.0 ms  (+ 668.5 ms in 21 steps since start of marking, biggest step 50.7 ms, walltime since start of marking 3332 ms) (average mu = 0.063, current mu = 0.005) 

<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x110c23139]
Security context: 0x287bc74e0dd1 <JSObject>
    1: keys [0x287bc74c15b1](this=0x287bcb9bfaa1 <Object map = 0x287be02c4cb9>,0x287bc68e8e29 <Object map = 0x287bcfd3aa99>)
    2: uvException(aka uvException) [0x287b27f974e1] [internal/errors.js:374] [bytecode=0x287b18cb32e9 offset=424](this=0x287bb6f004b1 <undefined>,0x287bc68e8e29 <Object map = 0x287bcfd3aa99>)
    3: handleErrorFromBinding(aka handleError...

[Info  - 9:59:17 PM] Connection to server got closed. Server will restart.
[Error - 9:59:17 PM] Request textDocument/formatting failed.
Error: Connection got disposed.
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:904:25)
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:74:35)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2309:42)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/main.js:155:15)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2296:18)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:240:26)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at IPCMessageReader.fireClose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:111:27)
    at ChildProcess.<anonymous> (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:213:45)
    at ChildProcess.emit (events.js:208:15)
    at ChildProcess.EventEmitter.emit (domain.js:476:20)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
[Error - 9:59:17 PM] Request textDocument/hover failed.
Error: Connection got disposed.
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:904:25)
    at Object.dispose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:74:35)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2309:42)
    at LanguageClient.handleConnectionClosed (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/main.js:155:15)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-languageclient/lib/client.js:2296:18)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at closeHandler (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/main.js:240:26)
    at CallbackList.invoke (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:62:39)
    at Emitter.fire (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/events.js:121:36)
    at IPCMessageReader.fireClose (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:111:27)
    at ChildProcess.<anonymous> (/Users/babycourageous/.vscode/extensions/svelte.svelte-vscode-99.0.44/node_modules/vscode-jsonrpc/lib/messageReader.js:213:45)
    at ChildProcess.emit (events.js:208:15)
    at ChildProcess.EventEmitter.emit (domain.js:476:20)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
Initialize language server at  Code/Project
Trying to load config for Code/Project/src/App.svelte
Initialize new ts service at  

Ini juga terjadi dalam proyek Svelte yang lebih besar ini yang menyimpan file lain (.js, dll). Jika saya menonaktifkan Svelte Beta, semuanya baik-baik saja (kecuali sekarang file Svelte tidak dikenali.

Saya tidak ingin memulai masalah baru karena tampaknya terkait dengan ini tetapi benar-benar dapat jika ini tidak terkait.

Terima kasih!

Terima kasih untuk informasi. Saya punya beberapa pertanyaan lagi untuk mempersempit ini:

  • Berapa banyak file langsing/js yang sedang kita bicarakan?
  • Apakah itu terjadi segera setelah beberapa detik/menit bekerja dengan proyek atau hanya setelah beberapa waktu?
  • Jika Anda menyetel svelte.plugin.svelte.format.enable ke false (https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#sveltepluginsvelteformatenable), apakah kesalahan masih terjadi? Atau apakah output dipenuhi dengan kesalahan memori?
  • Apakah Anda memiliki tsconfig.json atau jsconfig.json ? Jika tidak, apa yang terjadi jika Anda menambahkan satu (bisa yang sederhana saja)?

Hai @dummdidumm Terima kasih atas balasan cepatnya!

Pertama - mulai pagi ini saya membuka beberapa hal untuk menjalankan tes untuk pertanyaan Anda... dan sepertinya menghilang begitu saja. Klasik.

Berikut adalah beberapa jawaban untuk Anda untuk anak cucu:

Berapa banyak file langsing/js yang sedang kita bicarakan?

  • Proyek kecil (<10 file): Jendela kecil "Running Svelte Beta" muncul selama <10 detik, penyimpanan dan format file
  • Proyek yang lebih besar (> 10 file): Di sinilah saya menemukan masalah itu. Jendela itu muncul di kiri bawah dan mencoba dan mencoba selama sekitar 20-30 detik. Kemudian kaput.

Apakah itu terjadi segera setelah beberapa detik/menit bekerja dengan proyek atau hanya setelah beberapa waktu?
Sejauh ini segera. Buka proyek, ubah file, simpan, dan situasi di atas terjadi. Dan saya baru menyadarinya setelah update VSCode kemarin (atau sehari sebelumnya). Meskipun Svelte Beta lebih lambat untuk disimpan secara umum daripada ekstensi sebelumnya (sekitar 2-4 detik sebelum format dan penyimpanan terjadi), jika itu ada gunanya.

Jika Anda menyetel svelte.plugin.svelte.format.enable ke false (https://github.com/sveltejs/language-tools/tree/master/packages/svelte-vscode#sveltepluginsvelteformatenable), apakah kesalahan masih terjadi?
Saya dapat mencoba ini lain kali saya melihat ini terjadi. Sayangnya karena barusan berhenti secara acak, saya rasa tidak ada gunanya, heheh.

Apakah Anda memiliki tsconfig.json atau jsconfig.json?
Tidak ada .tsconfig atau .jsconfig dalam proyek saya. Jika Anda memiliki pengaturan sederhana untuk dibagikan, saya dapat mencobanya juga lain kali.

Jadi, hore semua itu lenyap, tapi sialnya kalau kita tidak tahu masalahnya sekarang, hehe.

Klasik

Saya mengajukan pertanyaan jsconfig.json / tsconfig.json karena kami memiliki kesalahan serupa sebelumnya di mana layanan bahasa akan memuat terlalu banyak file saat startup karena menemukan konfigurasi lain lebih jauh ke atas pohon file (di luar folder proyek) dan menggunakannya - meskipun itu harus diperbaiki sekarang.

Saya akan menambahkan beberapa logging untuk mendapatkan jumlah file yang dimuat saat startup serta setiap menit sesudahnya.

Kedengarannya bagus - saya akan memberi tahu Anda jika ada perubahan! Saya sedang bermain-main di salah satu dari> 10 proyek file itu sekarang dan semuanya masih lancar ...

Kami menambahkan langkah-langkah tambahan untuk mencegah file bloat awal. Jika ada yang masih mengalami penggunaan memori yang tinggi, silakan laporkan di sini. Lain saya akan menutup ini dalam beberapa minggu.

@dummdidumm ada pembaruan pada ekstensi Atom?

Lihat #70 untuk info dan kemajuan dalam hal ini.

Mengecualikan __sapper__ dari pengamat VSCode menghentikan ekstensi untuk kehabisan memori untuk saya.

image

Apakah halaman ini membantu?
0 / 5 - 0 peringkat