Articles of Java的

SocketInputStream.socketRead0()中CPU占用率高的原因

在分析本土networking应用程序的时候,我发现下面非常奇怪(至less对我来说)是观察的。 几乎所有的时间都花在SocketInputStream类的socketRead0()方法中。 这并不奇怪,因为我的应用程序在每个请求上都与远程服务联网。 奇怪的是,这种方法不仅壁挂时钟使用率高, CPU时钟时间也很高。 我不明白为什么CPU时间很长,因为如果我的应用程序等待远程服务来回复(实际上这不是很快),那么应用程序本身就没有什么可做的了。 所以CPU时间应该显然很低。 还有一些观察: 在采样模式下的VisualVM显示,方法SocketInputStream.socketRead0()正在消耗高达95%的时间(挂钟时间和 CPU时间); mpstat (我们使用Linux作为操作系统)显示约90%的用户时间和约1-3%的系统时间(其余为空闲时间); 应用程序部署在专用服务器上; 远程服务也是HTTP Web应用程序。 平均响应时间约为100ms。 平均响应大小约为2Kb。 我的应用程序使用spring RestTemplate与远程服务交互,而不是直接与SocketInputStream交互。 现在我只有一个想法 – 也许这是在JVM中调用本地方法的开销( SocketInputStream.socketRead0()是本地的)? 你怎么看? 有没有其他的原因呢?

截断内存映射文件

我正在使用内存映射IO的索引文件,但问题是,我不能resize为空的文件。 某处之前: MappedByteBuffer map = raf.getChannel().map(MapMode.READ_WRITE, 0, 1 << 30); raf.close(); // use map map.force(); map = null; 调整: for (int c = 0; c < 100; c++) { RandomAccessFile raf = new RandomAccessFile(indexFile, "rw"); try { raf.setLength(newLen); if (c > 0) LOG.warn("used " + c + " iterations to close mapped byte buffer"); return; […]

在Linux中运行时如何在Java中创build符号链接?

在Linux中运行时如何在Java / JVM中创build符号链接? 除了使用Java本地接口(JNI)或者java.lang.Runtime.exec("/bin/ln -s /some/path symlink")什么方法吗? 创build一个符号链接是非常依赖于平台的,但是我主要关心在Linux上运行,如果在Windows中创build一个快捷方式,那么奖励就会很大。

即使端口未被占用,也无法启动Glassfish 3.1

在新安装的Debian“Squeeze”服务器上启动Glassfish 3.1时出现问题。 这是一个已经安装的testing服务器, Glassfish安装从一个工作服务器复制到另一个服务器。 我试过跑步: # ./asadmin start-domain There is a process already using the admin port 4848 — it probably is another instance of a GlassFish server. Command start-domain failed. 我也尝试重新启动域,因为我想也许它正在运行: # ./asadmin restart-domain Server is not running, will attempt to start it… There is a process already using the admin port 4848 — […]

无法创buildJava虚拟机

面临一些与Java虚拟机初始化的问题。 当我使用root帐户时,我可以正常使用java。 但是当我是一个用户帐户,它返回以下错误 user@host# $JAVA_HOME/bin/java -version Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. 它不像一个内存问题,因为相同的命令适用于root帐户。 可用内存(免费-m)超过1200MB另外我已经尝试增加JVM内存限制

如何设置崇高的文本3运行和编译在Linux上的Java?

最近我决定学习Java并试一试。 我有一个短的和业余的Python经验,所以我不是一种编程专家。 经过许多天的努力,想出如何设置崇高的文本来运行和编译Java,我决定来任何帮助。 我已经安装了JDK,并且使用了Netbeans,但我更喜欢简约的IDE。 我创build了一个如下所示的.sublime-build文件.. 但是,当我尝试构build代码时,它会返回下面的错误。 所以,可能我做了一些错误的事情,但我真的不知道它是什么。 我使用的是Ubuntu 14.10,这就是我无法find很多答案的原因,所以如果有人能帮助我,我真的很感激!

我如何确定在Linux上是否使用Java或JRuby运行不同的进程ID?

我需要看看给定的进程ID是否正在运行,它必须在Java或JRuby(最好是Ruby解决scheme)中工作。 Linux可以依赖于系统(特别是Debian和/或Ubuntu)。 我已经有我正在寻找的PID,只需要看看它是否正在运行。 更新: 感谢所有人的回应! 我很欣赏它,但它不是什么我正在寻找…我希望在标准的Ruby库(或Java,但最好是Ruby)的东西…如果没有这样的库调用存在,我可能会坚持我已经有了procfs解决scheme。

在Linux上使用Java应用程序的OOM杀手

我在使用500MB RAM的Linux系统(版本2.6.39.2)上的Java应用程序出现问题。 每小时我的应用程序需要更多的1-2MB驻留内存。 应用程序从使用的常驻内存40MB开始。 15天后,OOM杀手杀死我的申请(见附件)。 更多信息: 我没有为我的应用程序设置任何内存限制(无Xms,Xmx,…)。 我使用了396MB的常驻内存,但是对于内存分析工具,我只用了7.8MB的内存,没有发生特殊的内存泄漏。 我能做些什么来find问题的根源,或者如何确保我的应用程序不会被杀死? 在此先感谢您的帮助。 最好的祝福。 编辑:这是一个独立的embedded式应用程序没有服务器。 部署在机器上的应用程序出现问题(难以安装分析工具),但不在我的开发PC上。 Jun 7 06:15:41 HMI user.warn kernel: java invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0 Jun 7 06:15:42 HMI user.warn kernel: Pid: 650, comm: java Not tainted 2.6.39.2 #7 Jun 7 06:15:42 HMI user.warn kernel: Call Trace: Jun 7 06:15:42 HMI user.warn kernel: [<c144c264>] […]

在Applet中显示中文文本

我们有一个Applet可以显示中文文本。 我们正在为它指定一个字体(Arial),它在Windows和Mac OSX下工作正常。 但在Linux上的Firefox中,中文字符呈现为正方形。 有没有办法解决这个问题? 请注意,我们不能假定客户端上存在特定的字体文件。

.War在Windows上部署但无法在Linux服务器上部署(Tomcat 7)

正如标题所介绍的,我试图使用Tomcat 7部署的.War文件不能在运行Linux的机器上运行。 它可以在Windows上运行,当然也可以在Tomcat 7上部署。 我试图单独追踪这个问题,并在网上search相关的问题,包括这个论坛,迄今为止没有成功。 这就是为什么我创build这个线程寻求帮助/提示。 我跟踪的错误消息如下: Sep 14, 2015 4:46:05 PM org.apache.catalina.deploy.NamingResources cleanUp WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SmartHomeReasoner]] so no cleanup was performed for that container javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. Unable to find [comp]. at org.apache.naming.NamingContext.lookup(NamingContext.java:819) at org.apache.naming.NamingContext.lookup(NamingContext.java:167) at org.apache.catalina.deploy.NamingResources.cleanUp(NamingResources.java:986) at org.apache.catalina.deploy.NamingResources.stopInternal(NamingResources.java:968) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) […]