New post: Using jlink to cross-compile minimal JREs
https://jakewharton.com/using-jlink-to-cross-compile-minimal-jres/
I've been doing this inside Docker containers for a while to keep their size down, but recently needed it to target an embedded Linux ARM device with only 100MiB of storage.
I don't think you absolutely have to, but it takes some of my images from being 140MiB to 40MiB which is a nice reduction. The only problems I've really had are libraries which cause needless modules to be kept. But I suspect it varies based on the libraries you use and how much reflection/unsafe magic they're doing. I certainly have had more success with jlink than I've had with Graal native-image.