Observability of the Java Virtual Machine

Image
The JVM is one of the most observable runtimes. It provides us lots of tools for troubleshooting a JVM application in production. 1. Thread observability Threads are how the JVM actually does work. When something is wrong in production, the symptom is almost always a thread: stopped, blocked, leaking etc. Thread dumps work on any JVM with no  instrumentation, no agents, no restarts. <Example project link with /threaddump endpoint>         // (1) Deadlock — two threads grab the same pair of locks in opposite order.         new Thread(() -> grab(LOCK_A, LOCK_B), "deadlock-A-then-B").start();         new Thread(() -> grab(LOCK_B, LOCK_A), "deadlock-B-then-A").start(); http://localhost:8080/actuator/threaddump To list the JVMS, we can use the command below. PS C:\observe-jvm> jps -lv 25296 jdk.jcmd/sun.tools.jps.Jps -Dapplication.home=C:\Program Files\Microsoft\jdk-21.0.3.9-hotspot -Xms8m -Djdk.module.main=...

Do you speak MATLAB?

MATLAB is a programming platform designed specifically for engineers and scientists. I first used it for a masters degree course on image processing. And now, I'm looking at it for the purpose of machine learning. Now lets remember what we can do with it:
Matlab has a command line and also you can save your scripts as .m files. You should define your functions and save them as .m files.

Note: If you put a semicolon to the end of the expression, the output is not shown in the console.

Lets create a 3 x 3 matrix:

A = [1, 2, 3; 0, 0, 0; -1, -1, -1]

Lets create a vector:

V = [2, 3, 6, 7]

Lets create a column vector:

V = [2; 3; 4; 5]


Lets draw a diagram with some values:

X = [1,2,3,4,5];
Y= [0,-1,3,4,8];
plot(X,Y)

How to define a function?

function y = myFunction(x)
    y = x^2 + x + 1;
end

From command line:

result = myFunction(6);

Lets create a uniformly spaced vector. 

V1 = 1:10
V2 = 1:10
plot(V1, V2)

We can also specify the interval:

A = 0;
B = 100;
C = A : 10 : B;

Be cautious about using whether matrix operator or element-wise operator:
In other words, there is a difference between ^ and .^  operators. The latter is the element wise power.

x = -2 : 0.1 : 2;
y = x.^2 + x + 1;
plot(x,y)

Commands for saving and loading data

"who" command shows the defined variables
"whos" command shows the variables and their properties (size etc.)

Lets save a variable, clear it and then load it again:

A = [1, 2, 3: 4, 5, 6];
who
save myVariables.mat A;
clear A;
load myVaribles.mat;
who
whos

Lets append a column to an existing matrix:

A = [1,2,3 ; 4,5,6]
A = [A , [0;0]]

Lets concatanate two matrices:

A = [10 20; 30 40]
B = [0 0 ; 0 0]
C = [A B]
D = [A ; B]

Element wise square:

E = A .^ 2

Matrix multiplication and element-wise multiplication

B = [1, 2 ; 3, 4]
A * B
A .* B

Comments

Popular posts from this blog

The WeakReference class, monitoring memory leak and garbage collection in a Java application

Simplescalar Simulator - Part 2: sim-outorder.c

Notes on Java Performance