frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

JVM Options Explorer

https://chriswhocodes.com/vm-options-explorer.html
51•0x54MUR41•2h ago

Comments

Hendrikto•1h ago
1843 options is too many. You could never even consider all of the possible combinations and interactions, let alone test them.

I have really come to appreciate modern opinionated tooling like gofmt, that does not come with hundreds to thousands of knobs.

tezza•1h ago
How is this different to system tuning parameters in Linux /proc, FreeBsd, Windows Registry, Firefox about:config, sockopt, ioctl, postgres?

Zillions of options. Some important, some not

mzi•1h ago
One of my nerd-quizzes I hade at interviews before was "what letters in what case are NOT flags to GNU ls".
eru•47m ago
The answer is 'man ls'. And: 'almost all letters of unicode'.
deepsun•1h ago
Just because you have more features and way to use them. Say I like to use a different garbage collector for a tool.
RadiozRadioz•1h ago
I don't think modernity is a noteworthy factor as to whether tooling is opinionated.
elric•59m ago
In what way is gofmt remotely comparable to a JVM?

In reality the number of options is significantly smaller than the 1843 you mentioned. The list contains boatloads of duplicates because they exist for multiple architectures. E.g. BackgroundCompilation is present on 8 lines on the OpenJDK 25 page: aarch64, arm, ppc, riscv, s390, x86 and twice more without an architecture.

avianlyric•48m ago
gofmt isn’t really comparable to the JVM, but it is a really strong expression of the opinionated tooling GoLang has.

While gofmt is “just” a formatting tool. The interesting part is that go code that doesn’t follow the go formatting standard is rejected by the go compiler. So not only does gofmt not have knobs, you can’t even fork it to add knobs, because the rest of the go ecosystem will outright reject code formatted in any other way.

It’s a rather extreme approach to opinionated tooling. But you can’t argue with the results, nobody writing go on any project ever worries about code formatting.

kfuse•13m ago
They do worry, they just can't do anything about it. Like the fact that error handling code takes at least three lines no matter how trivial it is. I'm sure error handling would not be critisized nearly as much if it didn't consume so much vertical space and could fit in one line, which go compiler does allow.
tomaytotomato•59m ago
It's a result of Java being required to run on many different OS environments (Oracle, Redhat, Windows, RISC/ARM/x86), along with user constraints and also business requirements.

In a way you can use this list of JVM options to illustrate how successful Java has become, that everyone needs an option to get it to work how they like it.

As a Java dev, I have maybe used about 10-15 of them in my career.

The weirdest/funnest one I used was for an old Sun Microsystems Solaris server which ran iPlanet, for a Java EE service.

Since this shared resources with some other back of office systems, it was prone to run out of memory.

Luckily there was a JVM option to handle this!

-XX:OnOutOfMemoryError="<run command>"

It wasn't too important so we just used to trigger it to restart the whole machine, and it would come back to life. Sometimes we used to mess about and get it to send funny IRC messages like "Immah eaten all your bytez I ded now, please reboot me"

nkzd•48m ago
Which JVM options do you use the most?
cogman10•43m ago
Heap size, GC algorithm.

I suggest most people never touch almost any other options. (Flight recording and heap dumps being the exception).

marginalia_nu•6m ago
GC threads are generally often useful on multi-tenant systems or machines with many cores, as Java will default-size its thread pools according to the number of logical cores. If the server has 16 or more cores, that's very rarely something you want, especially if you run multiple JVMs on the same host.

Not JVM options, but these are often also good to tune:

    -Djdk.virtualThreadScheduler.parallelism
    -Djdk.virtualThreadScheduler.maxPoolSize
    -Djava.util.concurrent.ForkJoinPool.common.parallelism
In my experience this often both saves memory and improves performance.
eru•47m ago
> You could never even consider all of the possible combinations and interactions, let alone test them.

Nobody has ever tested all possible inputs to 64 bit multiplication either. You can sample from the space.

pixl97•42m ago
Eh that sounds a bit different to me, multiplication should be roughly the same operator on each test, these are wildly different functions.
Geezus_42•30m ago
As a sysadmin, not developer, I hate Java almost as much as Windows. The error messages Java apps produce are like coded messages that you have to decipher.

I.E. Instead of "<DOMAIN> TLS Handshake failed" it will be something like "ERROR: PKIX failed". So now I have to figure out that PKIX is referring to PKI and it would make too much sense to provide the domain that failed. Instead I have to play the guessing game.

pron•20m ago
These are all the options that have ever existed, including options that are or were available only in debug builds used during development and diagnostic options. There are still a few hundred or so non-diagnostic "product" flags at any one time, but most are intentionally undocumented (the list is compiled from the source code [1]) and are similar in spirit to compiler/linker configuration flags (only in Java, compilation and linking are done at runtime) and they're mostly concerned with various resource constants. It is very rare for most of them to ever be set manually, but if there's some unusual environment or condition, they can be helpful.

[1]: https://github.com/openjdk/jdk/blob/master/src/hotspot/share...

quotemstr•15m ago
In the age of LLMs coupled with open source software, option count is unlimited. I fork FOSS projects and modify them for my own use all the time. Sometimes, with an agent, doing so is even easier than finding the "right" knob.
guusbosman•1h ago
There is a 2nd edition now of the Optimizing Java book you are referring to on your site.
grodriguez100•9m ago
He probably knows, since he is one of the authors.
coolius•41m ago
This is going to come very handy for development of CodeBrew, my Java IDE for iPhone/iPad. It runs a full OpenJ9 JVM under the hood, and I had to do a bunch off massaging with the options to get it to run properly. I wish I had known this page sooner!

For anyone intered, here's the app:

https://apps.apple.com/app/apple-store/id6475267297?pt=11914...

rvz•3m ago
All of that configuration and it will always be less efficient than Rust, or even Golang.

This is why lots of engineers waste time fiddling with options to tune the JVM and still require hundreds of replicated micro-services to "scale" their backends and losing money on AWS and when they will never admit the issue is the technology they have chosen (Java) and why AWS loves their customers using inefficient and expensive technologies.

Even after that, both Go and Rust continue to run rings around the JVM no matter the combination of options.

JVM Options Explorer

https://chriswhocodes.com/vm-options-explorer.html
52•0x54MUR41•2h ago•22 comments

Why weekends are under threat

https://thehustle.co/originals/why-weekends-are-under-threat
10•Anon84•15m ago•1 comments

Happy Map

https://pudding.cool/2026/02/happy-map/
42•surprisetalk•4d ago•7 comments

Phyphox – Physical Experiments Using a Smartphone

https://phyphox.org/
57•_Microft•4h ago•14 comments

An Interview with Pat Gelsinger

https://morethanmoore.substack.com/p/an-interview-with-pat-gelsinger-2026
63•zdw•2d ago•25 comments

The Miller Principle (2007)

https://puredanger.github.io/tech.puredanger.com/2007/07/11/miller-principle/
47•FelipeCortez•4d ago•37 comments

Anthropic downgraded cache TTL on March 6th

https://github.com/anthropics/claude-code/issues/46829
143•lsdmtme•7h ago•120 comments

AI Will Be Met with Violence, and Nothing Good Will Come of It

https://www.thealgorithmicbridge.com/p/ai-will-be-met-with-violence-and
86•gHeadphone•3h ago•118 comments

I run multiple $10K MRR companies on a $20/month tech stack

https://stevehanov.ca/blog/how-i-run-multiple-10k-mrr-companies-on-a-20month-tech-stack
370•tradertef•6h ago•239 comments

What have been the greatest intellectual achievements? (2017)

https://www.thinkingcomplete.com/2017/09/what-have-been-greatest-intellectual.html
26•o4c•2h ago•34 comments

Tofolli gates are all you need

https://www.johndcook.com/blog/2026/04/06/tofolli-gates/
85•ibobev•5d ago•20 comments

How We Broke Top AI Agent Benchmarks: And What Comes Next

https://rdi.berkeley.edu/blog/trustworthy-benchmarks-cont/
417•Anon84•17h ago•103 comments

Apple update looks like Czech mate for locked-out iPhone user

https://www.theregister.com/2026/04/12/ios_passcode_bug/
234•OuterVale•4h ago•124 comments

Stewart Brand on how progress happens

https://www.newyorker.com/books/book-currents/stewart-brand-on-how-progress-happens
20•bookofjoe•5d ago•5 comments

Internet outage in Iran reaches 1,008 hours

https://mastodon.social/@netblocks/116384935123261912
15•miadabdi•1h ago•0 comments

Small models also found the vulnerabilities that Mythos found

https://aisle.com/blog/ai-cybersecurity-after-mythos-the-jagged-frontier
1140•dominicq•20h ago•305 comments

No one owes you supply-chain security

https://purplesyringa.moe/blog/no-one-owes-you-supply-chain-security/
10•birdculture•1h ago•1 comments

How Complex is my Code?

https://philodev.one/posts/2026-04-code-complexity/
137•speckx•5d ago•34 comments

447 TB/cm² at zero retention energy – atomic-scale memory on fluorographane

https://zenodo.org/records/19513269
230•iliatoli•16h ago•126 comments

Dark Castle

https://darkcastle.co.uk/
199•evo_9•16h ago•25 comments

Pijul a FOSS distributed version control system

https://pijul.org/
168•kouosi•5d ago•25 comments

Relics of the Heroic Age of Manned Space Flight

http://heroicrelics.org/index.html
4•zdgeier•1d ago•0 comments

Apple Silicon and Virtual Machines: Beating the 2 VM Limit (2023)

https://khronokernel.com/macos/2023/08/08/AS-VM.html
208•krackers•16h ago•145 comments

The End of Eleventy

https://brennan.day/the-end-of-eleventy/
180•ValentineC•11h ago•143 comments

Cirrus Labs to join OpenAI

https://cirruslabs.org/
271•seekdeep•23h ago•132 comments

Advanced Mac Substitute is an API-level reimplementation of 1980s-era Mac OS

https://www.v68k.org/advanced-mac-substitute/
251•zdw•21h ago•63 comments

Show HN: Pardonned.com – A searchable database of US Pardons

444•vidluther•1d ago•246 comments

Network Flow Algorithms

https://www.networkflowalgs.com/
31•teleforce•5d ago•0 comments

Surelock: Deadlock-Free Mutexes for Rust

https://notes.brooklynzelenka.com/Blog/Surelock
224•codetheweb•3d ago•72 comments

How to build a `Git diff` driver

https://www.jvt.me/posts/2026/04/11/how-git-diff-driver/
121•zdw•18h ago•13 comments