No video

Only The Best Developers Understand How This Works

  Рет қаралды 97,729

Web Dev Simplified

Web Dev Simplified

Күн бұрын

JavaScript Simplified Course: javascriptsimp...
Managing memory in JavaScript is generally pretty easy because of garbage collection, but it isn’t always easy. In this video I will explain exactly what garbage collection is, how it works, and more importantly show you how you can debug and fix the most common memory related problems in your applications.
📚 Materials/References:
JavaScript Simplified Course: javascriptsimp...
🌎 Find Me Here:
My Blog: blog.webdevsim...
My Courses: courses.webdev...
Patreon: / webdevsimplified
Twitter: / devsimplified
Discord: / discord
GitHub: github.com/Web...
CodePen: codepen.io/Web...
⏱️ Timestamps:
00:00 - Introduction
00:27 - How garbage collection works
08:00 - Memory Management Advanced Tip
09:58 - How To Find Memory Leaks
13:55 - WeakMap & WeakSet
#GarbageCollection #WDS #MemoryManagement

Пікірлер: 115
@oscarleon3008
@oscarleon3008 Ай бұрын
I started watching your videos in 2020 as a way to learn. I told myself I'd self-teach myself enough to eventually land a junior job... 4 years later I still learn something new every time I watch one of your videos. And yes, I'm happily employed as a software engineer now :)
@dj10schannel
@dj10schannel Ай бұрын
Grats
@WebDevSimplified
@WebDevSimplified Ай бұрын
Congratulations on the job! It's a lifetime of learning. I still learn new things every week it seems like.
@abh1yan
@abh1yan Ай бұрын
​@@WebDevSimplifiedhave you ever tried reading the Ecmascript standards?
@nitsanbh
@nitsanbh Ай бұрын
5:09 "Any time you use a string, a number, a boolean - those [primitive values] will stay in memory forever, because they are not being garbage collected." Very inaccurate. Let's explain. Not all primitives are the same: some are stored in the heap, and some are in-place. Small integers (up to 31 bits) and booleans are in-place. They don't need clean-up (they'll be freed when the thing that holds them is freed). Larger integers (and floating point numbers) ARE stored in the heap. They are held by a pointer and they do need clean-up. All strings are stored in the heap! and hence, they WILL BE cleaned up, unlike what Kyle says. The reason that "innerString" wasn't cleaned is because V8 employs an optimization strategy called "Interning". Since people use strings pretty-much like enums, V8 keeps small strings in memory for longer, to avoid re-allocating them later.
@marketfinds
@marketfinds Ай бұрын
I was going to ask if you are worried about memory then using classes more would result in better cleanup but doesn't sound like the case. Good video otherwise.
@gurusystem
@gurusystem Ай бұрын
The other reason the "innerString" was retained in memory is because it is console logged, so the engine has to keep it in memory in case the DevTool needs to inspect it.
@jj-big-slay-yo
@jj-big-slay-yo Ай бұрын
This interning is the exat same as in java. THe nameing and the way of working is the same. So something more that makes javascript similar to java :)
@kavinda.jayakody
@kavinda.jayakody 20 күн бұрын
@@gurusystem Yep. Console logs are pure evil when it comes to memory allocation. Had couple of bad memory bloats due to logs
@NashBrooklyn
@NashBrooklyn Ай бұрын
a fun fact - the word null (and its other variations zero, hero, xero, rexo, orex, rex, xer) comes from arabic word for a hole in the ground which used to imprison debtors (those who never paid their debt to the king) - ergo the word - hole - you see during the garbage collection - is basically putting garbage into the hole - or nullifying as arabs in the middle ages would say - PS: and yes they did not have a numeric value which would represent a zero - so they used a letter for it - and guess what was the letter? that was the letter O as in owe - the letter resembles rounded edges of the debtor's hole in the ground -
@PrincipalDev
@PrincipalDev Ай бұрын
Garbage collection doesn’t happen immediately because it is thread blocking, so the browser may postpone it until an idle frame or until too much memory is used to avoid FPS drops. This is why you absolutely have to manually garbage collect (little icon showing a broom or brush) before testing. Otherwise your tests may be unreliable (as seen in this video when Kyle has to hard refresh). To check for memory leaks: 1. Manually garbage collect 2. Take snapshot 3. Perform the action that allocates memory (add some todos for example) 4. Perform the action that de-allocates memory (remove all todos) 5. Manually garbage collect 6. Take snapshot 7. Memory allocated between snapshots 1 and 2 should be close to 0. Better yet, repeat steps 2-6 and check the difference. If the difference increases you have a memory leak.
@NavySturmGewehr
@NavySturmGewehr Ай бұрын
Would you be willing to do a bit of a deep dive into IndexedDB? I really want to figure out how to use it for state in a react application.
@Frostbytedigital
@Frostbytedigital Ай бұрын
Dexie makes it pretty simple. They have some react specific hooks aswell but I use it in every framework for browser saved state that can take any ... even files!
@denverjamesduran2750
@denverjamesduran2750 Ай бұрын
Hey man you should definitely look up for tinybase. It offers reactivity and supports indexedDB too
@NavySturmGewehr
@NavySturmGewehr Ай бұрын
@@Frostbytedigital Yeah, there is a fair amount of data I want to store that would do best in a database style method of storage!
@lsavio5165
@lsavio5165 Ай бұрын
Try SQL lite
@lakhveerchahal
@lakhveerchahal Ай бұрын
This one was very informational! Great work Kyle!
@Frexuz
@Frexuz Ай бұрын
Maybe hint in the title Wtf the video is about?
@srdjagunjic
@srdjagunjic Ай бұрын
Nah, the title is clickbait for the first few days and then he changes it to something normal. Algo playing...
@irahazda
@irahazda Ай бұрын
@@srdjagunjic Veritasium had a video explaining this
@aeronwolfe7072
@aeronwolfe7072 Ай бұрын
quit b**ching
@GNXClone
@GNXClone Ай бұрын
Because it leaves you wondering "How WHAT works?" That said, Kyle's videos are gold and worth clicking. He doesn't need to bait us, imo.
@neelthakkar4492
@neelthakkar4492 Ай бұрын
Great insight about how to debug memory leak. Thanks for the information.
@gkiokan
@gkiokan Ай бұрын
Interesting. Keep up the good work. I am doing Enterprise Development for 11 Years now and never had to use this. Following best practices and writing clean code helps for sure. But once you might need to debug your Memory and Performance, this is quite a good Guide as to where to start from. Good Job man.
@harleyspeedthrust4013
@harleyspeedthrust4013 Ай бұрын
some of the comments are a little mean. the title is accurate; only the best developers know how memory works in v8 (and in general). you don't become a great developer by hopping javascript frameworks every week.
@TimK
@TimK Ай бұрын
Great video & explanation on garbage collection in Js!
@0ninetyseven97
@0ninetyseven97 19 күн бұрын
i am learning more and more from your videos. this helps me alot as a beginner! thanks so much kyle!
@yarin0600
@yarin0600 13 күн бұрын
08:00 - Golden tip!
@aeronwolfe7072
@aeronwolfe7072 Ай бұрын
good info Kyle. I learn something new from you all the time!!!! I appreciate you man!!!!!!!!!!!!
@kirillvoloshin2065
@kirillvoloshin2065 28 күн бұрын
by the way, hovering over the grey text starting with @ will show more info. also clicking on a record on a heap shows retainers of this object
@shooting4star2023
@shooting4star2023 Ай бұрын
A bit of misinformation in the video. Values of primitive/scalar types are also subject to garbage collection, not just reference types.
@someoneunknown8222
@someoneunknown8222 Ай бұрын
Wow, I thought javascript developers don't know that the information requires some memory to be stored in. Glad to see that at least best ones know such a thing.
@ashwinsuryawanshi
@ashwinsuryawanshi Ай бұрын
People who don't understand a language would often criticise it.
@someoneunknown8222
@someoneunknown8222 Ай бұрын
@@ashwinsuryawanshi people who don't understand programming would often choose javascript
@ashwinsuryawanshi
@ashwinsuryawanshi Ай бұрын
​@@someoneunknown8222 People who don't like programming would often start with HTML, CSS and end up learning JavaScript as that's what will land them a job. That is why most of the programmers working on JavaScript don't understand it well.
@ashwinsuryawanshi
@ashwinsuryawanshi Ай бұрын
@@someoneunknown8222 Thank you for making me laugh 🤣
@r.ebenezerpaul6850
@r.ebenezerpaul6850 Ай бұрын
heyy!! great video... My question is how do you know this?? like where do u get ur info from?
@migy220
@migy220 Ай бұрын
For example, in react. can we view the data stored in memory under the Memory?
@sabuein
@sabuein Ай бұрын
Thank you, Kyle.
@timoBike
@timoBike Ай бұрын
Really appreciate this video. Is possible to have another video to talk about how to find memory leak efficiently in Node JS service ?
@dead_holicx3127
@dead_holicx3127 Ай бұрын
Really good video and very informative one. Thank you!
@hut_fire1490
@hut_fire1490 Ай бұрын
Thanks Kyle ! Its very informative
@reactjs1900
@reactjs1900 Ай бұрын
I really needed this. Thanks 👍
@OudinAlex
@OudinAlex Ай бұрын
Not really what I would call a memory leak, but we get the concept. Nice video
@chaoliu2631
@chaoliu2631 Ай бұрын
You hair looks amazing, how do you do your hair? tell me the brand of the wax or spay you are using if it is okay.
@abu2musa
@abu2musa Ай бұрын
The debugging video and this one are like goldmines for developers. I always wondered why the performance part and debugging in chrome browser is not thought as it makes life so much easier.
@todd.mitchell
@todd.mitchell Ай бұрын
Perfect timing! Thanks for this.
@yoooo4177
@yoooo4177 Ай бұрын
Oh yay that means I’m one of the best developers! 🎉
@yoooo4177
@yoooo4177 Ай бұрын
@yoooo4177 No you’re not
@coderflix
@coderflix Ай бұрын
Exelent explanation! Thanks.
@user-fc8xh7uo4c
@user-fc8xh7uo4c Ай бұрын
Thanks for your awesome videos, dude!
@hamzamukhtar4506
@hamzamukhtar4506 Ай бұрын
Can you please make GC video for backend. And please make another video where we can use GC in real application. Thanks.
@doppeltevier
@doppeltevier Ай бұрын
Could you create a video about Atlassian's new framework-agnostic, low-level dnd library called "pragmatic-drag-and-drop"?
@paradox3210
@paradox3210 Ай бұрын
You can expose the GC and then trigger it with the little broom icon. That way, your snapshots are always "clean". I am currently struggling with a memory leak with Nuxt SSR - a small example like yours is easy, but as soon as you have a whole enterprise app, it gets really difficult to isolate things 😑
@yasseralsaidi
@yasseralsaidi Ай бұрын
nice, we need for network too!
@ChrissyCode
@ChrissyCode Ай бұрын
WeakMap i only use, when for example i want to figure out if data is duplicated or already added or not. But i could also just use a normal map, and clear it after the function. Or the map also get's cleared if initialized inside of the same scope
@ppnwt
@ppnwt Ай бұрын
Great video !!!, Thank you
@kamertonaudiophileplayer847
@kamertonaudiophileplayer847 Ай бұрын
Sure, only the best, and I am glad that I and you are the best.
@ev721
@ev721 Ай бұрын
Damn! This was extremely informative.
@aurelionsoul9125
@aurelionsoul9125 Ай бұрын
recently learned Javascript, is it possible to make a pixelated multiplayer game, sandbox style or top down
@kirillvoloshin2065
@kirillvoloshin2065 28 күн бұрын
yes
@Gigawattt
@Gigawattt Ай бұрын
In Chrome, is there a difference between opening an “incognito” window and just opening a Guest profile window? Both seem to give you no extensions, a clean history, and empty cache?
@RG-vv4wcRG
@RG-vv4wcRG Ай бұрын
what do you think about SolidJS
@RandomGeometryDashStuff
@RandomGeometryDashStuff Ай бұрын
05:10 what about strings that don't exist in source code but created dynamically like `Date()`?
@yatinarora1252
@yatinarora1252 Ай бұрын
see date exists on window object,so i will be staying in memory but date that we created will be holding in a variable that will be cleared by garbage collector.
@TheMetalMag
@TheMetalMag Ай бұрын
ok does that affect local storage?
@colindante5164
@colindante5164 Ай бұрын
Thanks for the upload. ))
@SperkSan
@SperkSan Ай бұрын
I have been using JavaScript for about 4 years and never knew there was a WeakMap class
@aaronely759
@aaronely759 Ай бұрын
This is why I started using web assembly instead of js
@dweblinveltz5035
@dweblinveltz5035 Ай бұрын
Isn't it a bit misleading to say that "primitives stay in memory forever?" True, they aren't stored in the exact way objects are. If you're declaring them on the global scope (or maybe even within the {} scope as you created in this video), then yes, they will likely stay in memory, but declaring them inside of a function (which is after all a specialized object) will reallocate their memory when the function's scope is popped off of the stack. Assuming the function isn't alive for the entirety of your running application, the primitives won't live forever.
@thekwoka4707
@thekwoka4707 Ай бұрын
Yes, he was just wrong on that. String literals are kept around (they exist directly in the code, so it's assumed they are likely to be used again), and also the console that the string was logged to is in memory as well, so the string is still in use in the console.
@thirdreplicator
@thirdreplicator Ай бұрын
Try wearing a neck brace.
@potaetoupotautoe7939
@potaetoupotautoe7939 Ай бұрын
dark mode plz, luv ur content btw
@gurusystem
@gurusystem Ай бұрын
The engine does GC before taking heap snapshot, you need to look at the retain path to see why there are three Test objects in memory. This video has multiple mistakes and inaccurate information. Please double check.
@yeabsragebriel32
@yeabsragebriel32 Ай бұрын
It's best tutorial but can you make another js master like challenge or exercise even to master it 😊😊😊
@ukaszzbrozek6470
@ukaszzbrozek6470 Ай бұрын
Thank you! I had a blank spot in my knowledge.
@iTzBoosTerZx
@iTzBoosTerZx Ай бұрын
I never noticed how much you move your head when speaking, but now I can’t unsee it
@karimbouche3563
@karimbouche3563 Ай бұрын
Really interesting
@MinhNguyenTao
@MinhNguyenTao Ай бұрын
Okay. Now I think I'm one of the best developers.
@user-lq9gc8ey4q
@user-lq9gc8ey4q 16 күн бұрын
The way how you look for memory leaks doesn't have a lot of sense. You know that you have problem with map. But what if you don't?
@dweblinveltz5035
@dweblinveltz5035 Ай бұрын
OK yo, I've been an JS engineer for years, I legit did not know you could just use curly braces by themselves to make a scope.
@6r31v1nZ
@6r31v1nZ Ай бұрын
why does anyone ever talks about memory leaks in JS?
@pankajwp
@pankajwp Ай бұрын
Gold
@thekwoka4707
@thekwoka4707 Ай бұрын
Lots of wrong things Your strings were kept in memory because they were string literals in the code, not because they were strings. Numbers are also collected, but don't have memory anyway, since they are raw pointers. You actually didn't talk at all about how garbage collection works in the section for "how garbage collection works".....
@NeoniumOxide
@NeoniumOxide Ай бұрын
Hi
@coladock
@coladock Ай бұрын
Tile "Best Developer". Me as a backend: ???
@zeteya
@zeteya 27 күн бұрын
So you're the best is it now?
@Dorgrident
@Dorgrident Ай бұрын
"You must know this!" "Only The Best Developers Understand How This Works" I think its called clickbait and alot of people know how it works.
@bharatchakrabarthy7571
@bharatchakrabarthy7571 Ай бұрын
Yeah i commented about the same thing on one of Kyles other video too where he kept the title too abstract and makes a soy face in the thumbnail. I don't understand why he can't just tell what the video is about in the title, will make it very easy to search in future and also know what I'm getting into before clicking the video.
@naught0
@naught0 Ай бұрын
@@bharatchakrabarthy7571 Because that's not how you make money on youtube lol
@Azurryu
@Azurryu Ай бұрын
Especially in the web scene where many people get a job without being qualified developrers, these concepts and specifically how to profile their JavaScript is barely known. I've been working in a web agency and except for two of twendy developers nobody knew about let and const, didn't even how what a class is (neither in JavaScript nor the general concept). Most of them didn't even use var, their coding standard was just huge files of implicitly declared global variables and functions. His titles are useless clickbait though... none of these people will ever find his videos when specifically searching for such information, contributing to the mess by making useful information not usefully accessible.
@fullstacklarry
@fullstacklarry Ай бұрын
Thats who usually gets the jobs, people who don't know shit and might have a degree....
@thekwoka4707
@thekwoka4707 Ай бұрын
Even worse that he's wrong on quite a lot of things and doesn't actually tell how garbage collection works...despite half the video being that section...
@Sankaritarina89
@Sankaritarina89 Ай бұрын
you have a dog? 🤩
@WebDevSimplified
@WebDevSimplified Ай бұрын
I have had her for a few years. She usually sleeps in my office while I work, but tends to leave when I start recording videos since she doesn't like it when I move around all my lighting equipment. She must have been really tired when I recorded this, though, as she didn't move an inch.
@RobbPage
@RobbPage Ай бұрын
enough of the clickbait titles. please just say WHAT your video is about. I'd hate to unsub after all these years but i don't play that clickbait bullshit.
@solvedfyi
@solvedfyi 22 күн бұрын
I might be disliking every one I click on just because I hate the vague nondescript clickbait titles. So unbecoming.
@kazmi401
@kazmi401 Ай бұрын
ClickBait!
@designerjehovah4453
@designerjehovah4453 Ай бұрын
How?
@aeronwolfe7072
@aeronwolfe7072 Ай бұрын
omG!!!!!!!!!!! STOP!!!!!!!!!!! so many haters. GEEZ
@seandavidson3602
@seandavidson3602 Ай бұрын
I always lose concentration on your videos when you pronounce the W in known and own etc. I just can't. I start googling trying to find out which dialect does this, and I'm told that none do. It;s just you. lol
@Benjamin-Chavez
@Benjamin-Chavez Ай бұрын
This was kinda unnecessary and rude.
@seandavidson3602
@seandavidson3602 18 күн бұрын
@@Benjamin-Chavez 👍OK, Boomer
@Malediction99
@Malediction99 Ай бұрын
Bro, just buy another guitar stand.
@uditvish726
@uditvish726 Ай бұрын
[].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );
@underscore_e
@underscore_e Ай бұрын
Awesome video thank you so much!
@uditvish726
@uditvish726 Ай бұрын
[].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );
@uditvish726
@uditvish726 Ай бұрын
[].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );
@uditvish726
@uditvish726 Ай бұрын
[].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );
@uditvish726
@uditvish726 Ай бұрын
[].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );
Learn Event Delegation In 10 Minutes
9:57
Web Dev Simplified
Рет қаралды 41 М.
Junior Vs Senior Code - How To Write Better Code
22:13
Web Dev Simplified
Рет қаралды 1,1 МЛН
Stay on your way 🛤️✨
00:34
A4
Рет қаралды 31 МЛН
IQ Level: 10000
00:10
Younes Zarou
Рет қаралды 13 МЛН
My Cheetos🍕PIZZA #cooking #shorts
00:43
BANKII
Рет қаралды 22 МЛН
Why Signals Are Better Than React Hooks
16:30
Web Dev Simplified
Рет қаралды 469 М.
The Most Important Skill You Never Learned
34:56
Web Dev Simplified
Рет қаралды 188 М.
Finally Fix Your Issues With JS/React Memory Management 😤
20:13
Jack Herrington
Рет қаралды 84 М.
Learn CSS Flexbox in easy way
5:05
cssiseasy
Рет қаралды 26 М.
The End Of Jr Engineers
30:58
ThePrimeTime
Рет қаралды 421 М.
Future Proof Your Tech Career In the Age of AI
10:21
Travis Media
Рет қаралды 34 М.
How To Debug React Apps Like A Senior Developer
21:07
Web Dev Simplified
Рет қаралды 114 М.
Learn Closures In 13 Minutes
13:22
Web Dev Simplified
Рет қаралды 62 М.
5 Design Patterns That Are ACTUALLY Used By Developers
9:27
Alex Hyett
Рет қаралды 244 М.