Articles of Java的

什么会导致java进程大大超过Xmx或Xss限制?

我有7个不同的Java守护进程,我在3个不同的服务器上运行(全部7个)。 java命令行有-Xmx2048m和-Xss1024k。 在这3台服务器上,所有21个进程显示VIRT大小不超过2.5 GB。 根据哪个守护进程,RES大小从300到1.9 GB不等。 这是应该的。 input新的服务器。 更快的CPU,更多的RAM(16 GB而不是8 GB),稍微更新的java(旧服务器上的1.6.0_10-b33,新服务器上的1.6.0_31-b04)。 两个系统(和JVM)都是64位。 将2个守护进程移到了新的服务器上。 在新的服务器上,给予相同的任务,守护进程消耗的CPU(相当于一个核心的价值)要多得多,而且要做的更less。 (从旧系统上的5110处理器移动到新系统上的5620处理器)。 几乎完全是CPU使用的额外核心(GC线程??),并报告5 GB VIRT和2 GB RES用于一个守护进程,10.5 GB VIRT和2 GB RES用于另一个守护进程。 任何想法会导致java忽略(或似乎忽略,如果是这样的话)的内存限制?

使用Java 1.5打开文件的跨平台方法

我正在使用Java 1.5,我想启动关联的应用程序来打开文件。 我知道Java 1.6引入了桌面API ,但是我需要Java 1.5的解决scheme。 到目前为止,我在Windows中find了一个方法: Runtime.getRuntime().exec(new String[]{ "rundll32", "url.dll,FileProtocolHandler", fileName }); 是否有跨平台的方式来做到这一点? 或者至less有一个类似的Linux解决scheme?

Eclipse挂起启动

我有运行我的Eclipse的问题。 我用java 6和java 7试过3.7,4.2和4.3版本。没有任何东西可以帮助我。 它显示我popup屏幕,但它不开始加载(我没有机会select工作区)。 使用-debug -console参数启动它显示它在此刻停止运行: Time to load bundles: 10 Starting application: 6374 osgi> 我已经启动了JVisualVM,但是我无法观察任何特别的东西。 没有死锁等 编辑 我的观察结果很深…在60秒之后,日蚀已经死了。 编辑2 现在停下来 Time to load bundles: 8 org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized. Will retry after the state location is initialized. Starting application: 3557 编辑3 我已经设法启动它,但只使用-clean参数,并从命令行-data参数中select工作空间。

在Linux中执行jar文件

我创build了一个可执行的Java .jar文件。 也就是说,我正确地打包了一个.jar文件中的java程序,包括一个META-INF / MANIFEST文件 。 (顺便说一下,在大多数安装了Java的Windows机器上,.jar文件被注册为像javaw.exe -jar %1一样运行,所以你可以双击已经准备好的jar文件。) 我只是将相同的文件复制到Linux,并试图做同样的事情。 但是,当我点击该文件时,只是将jar打开为zip文件,而不是调用java。 我怎样才能configuration我的Linux系统,以便在双击jar文件时执行jar内的程序? 也就是说,当我双击java -jar test.jar时,如何让我的系统调用类似java -jar test.jar东西?

Java 8与Jetty在Linux内存问题

你能帮我解决以下问题吗? 语境: 我们正试图将我们现有的运行在Java6(Glassfish)上的应用程序迁移到Java8(在Jetty9上)。 之前,我们能够在Java7上成功迁移相同的设置(在jetty9上)。 但客户决定现在就用Java 8。 在这个过程中,我们遇到了一些内存问题,下面是细节: 问题描述: 启动Jetty服务器后,java进程的初始(RES)内存使用量约为5.5克。 在运行应用程序一段时间后,内存使用缓慢上升,并消耗机器上最大的可用物理内存(8g),最终导致服务器/系统崩溃。 这个问题只在linux环境下遇到。 在Windows环境中找不到这样的问题。 Profiler发现: 使用VisualVM和jconsole监视服务器。 在两个分析器中,JVM的内存(堆和非堆)使用率都低于分配的限制。 环境详情: Java Version : 8 Server : Jetty 9.2.10 OS : linux on a virtual machine(Linux version 2.6.32-279.14.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue Nov 6 23:43:09 UTC 2012 Java Options : -Xms3072M […]

Ubuntu和SuSE的Java应用程序的安装程序/打包程序

我有一个Java应用程序符合我想要在Ubuntu和SuSE上安装的一系列jar文件。 我希望安装程序能够检查JRE,注册文件关联,并能够卸载时加载网站。 我了解Ubuntu和SuSE是基于不同的体系结构,那么是否有一致的方法来做到这一点? 有没有人有build议使用实用程序或指导阅读,以帮助我实现我想要做的事情。

明白使用Solr时如何解决“locking超时”?

我有我们的Solr系统的两个核心(Solr版本3.6.1)。 当我在专用的Solr服务器上调用以下命令行来添加索引文件时: java -Durl=http://solrprod:8080/solr/original/update -jar /home/solr/solr3/biomina/solr/post.jar /home/solr/tmp/2008/c2m-dump-01.noDEID_clean.xml 我在/usr/share/tomcat7/logs/solr.2013-12-11.log文件(约等待6分钟后)中遇到exception: SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@/home/solr/solr3/biomina/solr/original/data/index/write.lock (你可以在这封邮件的末尾看到它的详细输出)。 我试图修改锁的超时(通过设置writeLockTimeout为300000 ),但这并没有解决问题。 我没有使用任何自定义脚本,只是Solr 3.1.6附带的post.jar来添加和索引。 任何有关什么需要改变,以摆脱这个错误的想法,并成功地将XML文件添加到Solr并索引它? /home/solr/solr3/biomina/solr/solr.xml内容: <?xml version="1.0" encoding="UTF-8" ?> <!– Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. […]

了解JVM堆打印输出中的元数据行

在Java 8堆打印输出中,您可能会看到如下所示的行: Metaspace 采用 2425K, 容量 4498K, 承诺 4864K, 预留 1056768K https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html试图解释这一行: 在Metaspace开始的行中, 使用的值是用于加载的类的空间量。 容量值是当前分配的块中可用于元数据的空间。 提交的值是可用于块的空间量。 保留值是元数据保留的空间量(但不一定是已提交的)。 再次,从上面的链接: 从操作系统请求空间,然后分成块。 类加载器为其元数据分配元数据的空间(块被绑定到特定的类加载器)。 我想知道每个领域是什么意思(使用,能力,承诺,保留),但我正在努力理解上述定义。 我的理解是,metaspace是从JVM进程的虚拟地址空间中分离出来的。 JVM在启动时根据-XX:MetaspaceSize保留初始大小,该大小具有未logging的特定于平台的默认值。 我假设保留指的是元空间的总大小。 空间被分成块。 我不确定每个块是否具有相同的大小。 每个块包含与单个类加载器关联的类元数据。 容量和承诺的声音像我的自由空间(基于链接的定义)。 由于元数据存储在块中,因此我会假定使用的容量将等于提交,但是不会。 也许承诺意味着使用的保留空间,但那么用什么来表示? 元数据使用的空间? 那么,还有什么其他的方式来使用这个空间? 我希望你看到我的困惑。 我希望澄清一下这些定义。

使用java.library.path和LD_LIBRARY_PATH之间的区别

使用jvm参数有没有区别? -Djava.library.path=/path 在jvm开始 并设置Linuxpathvariables export LD_LIBRARY_PATH=/path 在JVM开始之前。 这两种select有什么优点/缺点?

在linux下的不同用户下的java系统首选项

我试图在一个Linux机器上的不同用户下运行多个jvms(包括tomcat)。 我没有看到太多的问题,但在catalina.out我一直看到这个: May 30, 2014 1:16:16 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 7626 ms May 30, 2014 1:16:37 PM java.util.prefs.FileSystemPreferences$2 run WARNING: Could not create system preferences directory. System preferences are unusable. May 30, 2014 1:16:55 PM java.util.prefs.FileSystemPreferences checkLockFile0ErrorCode WARNING: Could not lock System prefs. Unix error code -158097957. May 30, 2014 1:16:55 PM […]