我看过以下链接:
- 程序化地设置java.awt.headless=true
- http://www.oracle.com/technetwork/articles/javase/headless-136834.html以及
- 其他一些链接。
这些链接中都没有解释使用此标志的好处。
这个标志是否有性能优势?如果是,是否有大概的量化数据展示它带来了多少性能优势?(我知道性能问题的答案完全取决于具体情况,但如果有人报告了良好的效果,了解一下也是不错的。)
我看过以下链接:
这些链接中都没有解释使用此标志的好处。
这个标志是否有性能优势?如果是,是否有大概的量化数据展示它带来了多少性能优势?(我知道性能问题的答案完全取决于具体情况,但如果有人报告了良好的效果,了解一下也是不错的。)
java.awt.headless=true
没有性能优势。 AWT功能是按需加载的。Canvas
,Panel
和Swing组件,但不包括顶层组件
- 获取有关可用字体、字体度量和字体设置的信息
- 为呈现文本和图形设置颜色
- 创建和获取图像并准备图像以进行呈现
- 使用java.awt.PrintJob
,java.awt.print.*
和javax.print.*
类打印
- 发出音频蜂鸣声 BufferedImage img = new BufferedImage(200, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g = img.createGraphics();
g.drawLine(80, 30, 120, 70);
g.drawLine(80, 70, 120, 30);
ImageIO.write(img, "png", new File("image.png"));
当使用-Djava.awt.headless=true
运行时,会生成一个图像文件:
-Djava.awt.headless=false
(且没有X窗口服务器)运行时,会抛出异常:
java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
请注意,JVM包含启发式算法来确定java.awt.headless
的值,如果它没有被明确设置。例如,在Linux上,如果未设置DISPLAY
环境变量,则java.awt.headless
自动变为true
。
java.awt.headless
(如果您不需要“完整”GUI模式)。java.awt.headless
用于控制台应用程序和服务器。这不会造成伤害。if (GraphicsEnvironment.isHeadless()) { throw new HeadlessException(); }
字体呈现和图像处理代码略有不同。此外,任何应用程序都可能依赖于此标志。例如,以前,当未使用标志并从系统脚本运行tomcat时,tomcat会崩溃。 - BaRoN一种可能的好处是,如果您在尝试在窗口中做其他事情时调用应用程序,可能会多次调用应用程序,如果应用程序在无头模式下运行,则不会破坏您的键盘/鼠标焦点。
至少在Mac上,我在尝试在另一个窗口中编辑时每隔几秒钟重复运行Java应用程序的脚本时遇到了巨大问题。无头模式解决了这个问题。