Sun JDK在Linux与Windows下表现悬殊,Linux下面很慢不知道要优化什么?

问题描述

我写了一个处理HTML的小程序,用了neko库,生成Document对象后做分析处理。整个程序在Windows下运行一切OK,到了Linux服务器上,却在提取URL时特别卡(比某些贴子里提到的1:10还夸张,要卡老半天)。URL的提取我先是用的getElementsByTagName('A'),后面怀疑当A标签多达上千个时这个方法是不是有性能问题,就改成了遍历,结果还是一样的。但也不一定是这一句本身卡住。提取出来的URL生成java.net.URL对像,放在一个Set里。怀疑过Set过大内存不足,但我一来试过启动时加大内存,二来我把程序改成了每一百个就提交一次并清空Set,都不见效果。这个小程序没有多线程(neko 包里有没有不清楚,但似乎它的工作完成的比较顺利,应该与它无关)。Linux环境为CentOS 5 64bit, Sun JDK 1.6, SELinux Permit, Tomcat运行良好。看别人有因为系统自带了 JDK 1.4且默认用了这个导致速度很慢的,我的系统里找不到其它JDK,java -version也是正确的。请高手们给个思路吧,我也计划找个性能分析工具看看更具体的东西。只是这么个小程序,居然弄到这么麻烦…… 问题补充:资源占用没什么,不过椎栈追踪提醒了我。初步怀疑每个java.net.URL对象创建时(或hashCode时?)都会去getHostAddress,大量解析Host名称致使速度变慢。不知是否真是这样。我还在Googling,大家如有比较了解的,欢迎并感谢告知。若果真如此,这个东西难道Linux下的解析速度远低于Windows?还是Windows直接偷懒了呢?

解决方案

直接用JDK自带的JCONSOLE看看
解决方案二:
使用Yourkit,非常方便。
解决方案三:
JDK的bin目录下有个jconsole可以查看JVM运行时的状况。windows下的话,除了这个还有个jvisualvm.exe更清楚点。

时间: 2024-11-01 02:15:08

Sun JDK在Linux与Windows下表现悬殊,Linux下面很慢不知道要优化什么?的相关文章

phpexcel图乱码-无人能解。。phpexcel生成饼状图,在Windows下正常在Linux下乱码!

问题描述 无人能解..phpexcel生成饼状图,在Windows下正常在Linux下乱码! 生成图片导出时,在Windows下整成显示,在Linux上导出的文件里只有乱码 但如果只生成表格,都可以正常显示,这个是代码: include ""PHPExcel.php""; include ""PHPExcel/Writer/Excel5.php""; //用于输出.xls的 //创建新的对象 $objPHPExcel = ne

html2pdf导出,windows下正常,linux下乱吗

问题描述 html2pdf导出,windows下正常,linux下乱吗 本来直接用的jsoup,换了linux后乱码了,最后发现linux下读取个文件都乱码linux下网页内容字节流保存本地xml文件正常没有乱码,然后读取文件就乱码了,各位大神这啥原因啊,代码里编码都对应的,windows下都正常的,换linux就乱码了 public String convert2PDF() { PdfContentByte content = null; BaseFont base = null; Recta

如何在Windows下查杀Linux恶意文件

在对linux系统应急处理时,常需要查杀系统中是否存在恶意文件,但纯手工检查的话,难免会有遗漏,虽然在linux系统中也有一些专门门的查杀工具,但终究维护的人少,效果也不是非常明显,但如果先使用windows平台下的杀毒软件,去查杀linux文件的话,那效果是会强上一个等级,下面我们就来介绍下如何在windows下查杀linux系统文件的方法,提供一种思路: 1.linux开启nfs,共享 '/ ' 或 'web目录' #(根据需要); 2.windows挂载 linux共享 ; 3.开启杀毒软

常用windows下远程管理Linux服务器的方法

随着互联网的 高速发展以及Linuxhttp://www.aliyun.com/zixun/aggregation/13760.html">企业应用的成熟,Linux被广泛应用于服务器领域,如何实现Linux的远程管理成为 网络管理员的首要任务.我们经常见到的几种最为常用的windows下远程管理Linux服务器的方法,基本上都是利用SecureCRT,F-Secure SSH 抑或是PUTTY等客户端工具通过ssh服务来实现Windows下管理Linux服务器的,这些客户端工具几乎不需要

Linux与Windows下tomcat内存设置

Linux下修改JVM内存大小: 要添加在tomcat 的bin 下catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下# vi TOMCAT_HOME/bin/catalina.sh(默认文件内容) 以下是自己设置的另外增加一个setenv.sh文件来设置tomcat内存,给文件加上执行权限 #vi /opt/app/tomcat6/bin/setenv.shexport JAVA_OPTS="-server -Xms512m -Xmx1024m -XX

在Linux下和Windows下遍历目录的方法及如何达成一致性操作

最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件夹的使用具有一致性,非常方便.但在C中就不一样了,而且在不同的平台下使用方法也不同.在Linux下实现该功能就非常方便,因为自带有API库,几个函数用起来得心应手(虽然有些小问题,后面说),在Windows下实现就不是那么方便,虽然也有自己的API,但用法有些晦涩难懂,因为没有封装起来,需要自己一步

Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务

关于MongoDB的windows的 安装,可以参考: http://www.runoob.com/mongodb/mongodb-window-install.html 关于Linux的安装可以参考: http://www.runoob.com/mongodb/mongodb-linux-install.html 使用MongoDB的场景: A:需要写入大量的数据,但是这些数据的价值并不是太高,比如:日志 B:数据增长量较大,而且数据结构有时候还不一致 C:未来数据会很大. 注意:Mongod

Linux和windows下内存溢出以及修改tomcat的jvm内存

一.内存溢出概述 常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space  ①java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信的,Class在被Loader时就

Linux下和Windows下创建Oracle数据库,表空间,Oracle用户

通过SSH工具或是XShell工具进入远程Linux下. 其中,通过SSH工具登录的界面如下: 其中Host Name是远程服务器的ip地址.User Name是服务器的一个用户名,端口号默认22,Connect进去后可以填写服务器的密码. 通过XShell工具登录的界面如下: 点击上面的New按钮,填写HOST主机地址,即服务器的IP地址,点击OK即可.   输入命令:    cd /    到根目录下 启动tomcat usr/local/tomcat/bin/startup.sh(这是to