
.NET Memory Performance Analysis - rbanffy
https://github.com/Maoni0/mem-doc/blob/master/doc/.NETMemoryPerformanceAnalysis.md
======
thdrdt
She has some video's on her YouTube channel about this topic as well:
[https://www.youtube.com/channel/UCk1EXxUVEKnPNV5gTAijSZg](https://www.youtube.com/channel/UCk1EXxUVEKnPNV5gTAijSZg)
(cat included)

I don't think they were linked from the document on github.

------
curiousmindz
Very detailed list of recommandations.

Do they apply to other Garbage-collection-based languages?

~~~
qes
The article is quite specific to the .Net garbage collector. Only some of the
most general concepts touched on in the introductory sections apply to other
garbage collected languages.

~~~
kevingadd
In particular as far as I know .NET's decision to segment things into 3
generations is pretty unusual.

~~~
EdwardDiego
Looks broadly identical to JVM generations. Gen0 = eden space, Gen1 = survivor
space, Gen2 = old gen (think they're calling it tenured now lol).

------
danielbarla
Honest question here - does this document start at a point where you've
already done some analysis, and decided that memory is your bottleneck, and
memory profiling and optimisation is the way you want to go? Or is a generally
accepted best practice to first do this anyways, and then move on to e.g. CPU
profiling, regardless of being say CPU-bound? I've only skimmed the document,
intending to read it later, but didn't see an answer to this. Where can I find
more info?

(I'm asking as someone who has done a fair bit of "performance work" but
strictly at a higher level - by selecting more appropriate algorithms for the
nature and size of data, minimising time spent waiting for network calls, etc,
so it's rare that I have to dive very deeply in to "proper" performance work.
But, I would like to learn more.)

~~~
TruffleMuffin
Pretty sure this is the person who is one of the architects on the Garbage
Collector in NET.

~~~
danielbarla
I'm in no way questioning their expertise; I am simply asking if there's a
step that comes before this document.

------
sbelskie
If you read one person about dotnet, this is the person. If you read two,
include David Fowler.

~~~
manigandham
There's a lot of great people in the .NET ecosystem, but I don't think GC
internals are that relevant for most typical .NET devs.

~~~
rdhatt
Typically, you're right - GC internals aren't usually relevant. That is, until
you're fire-fighting a GC-related issue in production. GC internals aren't
something you want do a crash-course on while your app burns.

~~~
vsareto
I'd call it a good sign if you can even identify GC-related issues in
production. That means all of the other problems that seem to plague .NET
shops have been taken care of.

------
mdziadowiec
I recomend this book:
[https://www.apress.com/gp/book/9781484240267](https://www.apress.com/gp/book/9781484240267)

~~~
jonathanlydall
Last I used Apress, after placing the order they had writing at the bottom of
the order confirmed page to the effect of: "We didn't ask for your permission,
but regardless we've added you to our marketing email list and the only way to
unsubscribe is to contact our customer service team."

It's the first and last time I've used them.

~~~
mdziadowiec
Never mind the Apress, the book is also available or Amazon or other
bookstores. The material that this book covers is very impressive and the
author knowledge even more, he has some of his womrshops/conference speaches
available on yt

~~~
mdziadowiec
[https://www.amazon.co.uk/gp/aw/d/148424026X/ref=dbs_a_w_dp_1...](https://www.amazon.co.uk/gp/aw/d/148424026X/ref=dbs_a_w_dp_148424026x)
Btw its 1100pages long!

------
miketlewis
Any suggestions for an equivalent for Java?

