This thread (2002!) has a good explanation for installed breakpoints
Blue breakpoints mean that the breakpoint is not installed.
In older builds, a green icon means that the breakpoint was successfully installed.
An installed breakpoint means that the class has been loaded in the target VM and a breakpoint request has been successfully created at the desired location (for a line breakpoint) for the current debug target.
In the current builds, an installed breakpoint is indicated with a small checkmark overlay icon on top of the blue "base" icon.
A breakpoint may not been installed:
- when the class is not loaded (or not yet loaded)
- our breakpoint location verifier fails to identify a non-executable line of code and lets you place a breakpoint on that line.
- when you run instead of debug.
As mentioned in jdt documentation:
- An enabled breakpoint causes a thread to suspend whenever the breakpoint is encountered. Enabled breakpoints are drawn with a blue circle and have a checkmark overlay once successfully installed. A breakpoint can only be installed when the class the breakpoint is located in has been loaded by the VM.
- A disabled breakpoint will not cause threads to suspend. Disabled breakpoints are drawn with a white circle .