Creating 5,000 background threads in my ASP.NET Web app

I once saw a guy speaking about multi threaded programming, and he asked his audience how many of the people amongst had audience had created multiple threads, at which point half the room lifted their arms. Then he asked how many had used dozens of threads running simultaneously, at which point 25% of the room kept their arms up. When he reached the question "how many have created millions of concurrently executed threads" the speaker was the only person left with his arm raised. The reasons for this of course, is because the idea of creating millions of concurrently executed background threads is simply ridiculous to even imagine.

However with Hyperlambda, at least in theory, this is actually quite easily achieved. To understand how this is possible, realise that multi threading is just a state machine, allowing you to perform context switches, at the CPU level, with an interrupt scheduling work for each individual thread.

What Are Garbage Collection Logs, Thread Dumps, and Heap Dumps?

Java Virtual Machine (JVM) generates 3 critical artifacts that are useful for optimizing the performance and troubleshooting production problems. Those artifacts are:

  1. Garbage collection (GC) log
  2. Thread Dump
  3. Heap Dump

In this article, let's try to understand these 3 critical artifacts, where to use them, how do they look, how to capture them, how to analyze them, and their differences.