Tag: jvm

在Docker环境中直接将Java代码编译成本地exe文件是否有用?

Docker也是一种虚拟机,那么我们真的需要JVM来运行我们的Java代码。 相反,我们可以直接编译为本机可执行文件。 Docker容器将打包完整的依赖关系来运行exe。 请给出意见。 我不想启动Java语言的任何比较。 只是想了解在Docker容器中运行JVM的优点。

由于内存中断,Tomcat被Docker容器杀死

我最近正在用tomcat开发一个rest服务。 我设置了JAVA_OPTS = -Xmx1648m -Xmn1648 -server并确保它们已经生效。 docker正在运行,内存限制设置为4g。 我们的观察是,tomcat进程的内存使用量不断增长,最终达到4g。 然后,内存成本在几分钟到几小时之间随机地保持在99%〜100%之间。 然后,tomcat进程崩溃没有任何错误,如jvm堆oom。 我使用jmap来转储堆时,由docker统计观察的内存消耗大约3.5克。 转储文件大小在400m以下。 使用mat来分析转储文件显示大部分内存部分实际上可能被垃圾收集。 我也手动运行jcmd pid GC.run,这大大减less了内存使用(从2g到1.4g)。 我的检查是,tomcat从来没有达到jvm设置的限制,否则,应该有关于jvm堆oom的错误日志。 然后,内存应该被jvm或tomcat中的其他线程使用。 但是我找不到解决这个问题的办法。 请帮忙!

Prometheus – Docker / JVM监控

我打算使用Prometheus来监视Docker容器中的JVM。 我们用javaagent为JMX导出器实现了这一点。 我的问题是我怎么dynamic发现和更新我的prometheus.yml的刮目标的JVM被监视当我打开/停泊docker集装箱。 我在Docker容器中运行tomcat。 有什么build议么? 在此先感谢,并感谢您的时间。 KARTHIK

Docker Java内存使用情况

我有一些理解Docker Java容器如何为主机使用内存的问题。 我给容器JVMselect "JAVA_OPTS=-XX:MaxMetaspaceSize=1024m -Xms=512m -Xmx=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m " 但是,当我在容器上运行Docker统计信息时,我发现MEM USAGE是1.6GB docker是否为容器的JVM部分分配内存? 你通常限制容器的内存限制吗?

java.library.path中没有fontmanager

以下代码在我的桌面上工作得很好: BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setFont(new Font("SansSerif", Font.BOLD, 18)); Graphics2D graphics = (Graphics2D) g; graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); graphics.drawString(s, 5, 20); 但是,当我在我的服务器上运行这个代码(在Docker容器内的Linux上运行的openjdk)时,会失败,并显示以下错误: java.lang.UnsatisfiedLinkError: no fontmanager in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61) at java.security.AccessController.doPrivileged(Native Method) at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32) at sun.font.SunFontManager$1.run(SunFontManager.java:339) at java.security.AccessController.doPrivileged(Native Method) at sun.font.SunFontManager.<clinit>(SunFontManager.java:335) at java.lang.Class.forName0(Native Method) […]

Docker无法findJVM

我正在尝试构build的容器需要安装在/usr/lib/jvm/java-8-openjdk-amd64的JVM。 我已经添加了该行 RUN ./installer.sh –javahome /usr/lib/jvm/java-8-openjdk-amd64 到我的Dockerfile 。 不过,我仍然收到错误消息: Searching for JVM on the system… Java Runtime Environment (JRE) was not found at the specified location /usr/lib/jvm/java-8-openjdk-amd64 The command '/bin/sh -c ./installer.sh –javahome /usr/lib/jvm/java-8-openjdk-amd64' returned a non-zero code: 4 更新 这是整个Docker文件 FROM scratch MAINTAINER Oracle Linux Product Team <ol-ovm-info_ww@oracle.com> ADD oraclelinux-7.3-rootfs.tar.xz / # overwrite this […]

即使运行容器,docker统计信息也显示零内存使用情况

我有Docker Swarm运行的两个容器: # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 18f1e7d79f5b default/image1:latest "/bin/sh -c 'java …" 12 hours ago Up 12 hours image1.1.x56zz152kmqtqpxzle5nkbs8r 11d1f05fcff1 default/image2:latest "java -cp /app/sca…" 13 hours ago Up 13 hours image2.1.ljztzeeh8i5r6ebr3n4hcj45e $ docker stats –no-stream CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O […]

如何在Java中处理closures请求

例如,当一个操作系统尝试重新启动时,我认为Java应用程序会收到某种closures请求。 我想对我的应用程序如何处理这些请求有一定的控制权。 但是,我不知道从哪里开始。 我有一些问题是: 所有closures请求是否都来自JVM? 容器,虚拟机和裸机操作系统的请求是否不同? 我特别感兴趣的是如何在docker集装箱内处理这个问题。 而且,当然,我可以使用哪些库来处理这些请求? 如果有人能够指出一个深度覆盖的资源,除了原始文档,例如书籍或在线课程(不一定是免费的)之外,这将是非常好的。 虽然,文档的链接也一定会受到赞赏。 谢谢! 更新:我知道我需要能够处理像电源线被抽出的事件。 但是,当我要求我的Windows机器closures时,有时会popup一个窗口,提示“正在等待这些应用程序closures”。 所以,我假设操作系统告诉应用程序在强制停止之前closures自己。 这是不正确的假设吗? 我想要完成的是应用程序在关机前logging信息或更新数据库。 我会看看addShutdownHook 。 再次感谢!

下载Docker Jenkins图片后,在Ubuntu找不到jenkins_home文件夹

我从Docker中央存储库中提取了Docker-Jenkins镜像并运行以下命令 $ docker run -p 8080:8080 -p 50000:50000 Jenkins 在安装过程中,出现下面的几行。 *************************************************************************` Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: xxxxxxxxxxxxxxxxxxxxxx This may also be found at: /var/jenkins_home/secrets/initialAdminPassword *************************************************************************` 但是在我的/var ,不存在jenkins_home文件夹。 我得到以下错误,我无法访问我的jenkins使用localhost:8080 信息:Jenkins完全正常运行 2016年10月11日上午4时31分19秒winstone.Logger logInternal 信息:JVM正在终止。 closuresWinstone 当生成pipe理员密码时,我可以访问Jenkins仪表板。 但是,立即,JVM正在终止,我不能再访问Jenkins页面。

使用主机JVM在Docker容器中运行jar

我想用ssh和ftp服务器捆绑一个映像,以及在容器启动后立即运行的jar文件。 问题是我不希望在每个映像上安装不同的JVM(我可能会在同一个主机上运行多个实例,这将浪费资源)。 所以我想知道是否有可能使用主机JVM在容器中运行jar。 谢谢! 罗德里戈。