因为前面一个星期回家看病(都是coding)惹得祸 所以一直没上线
所以前面的帖子就没看
当然问题也没解决
http://www.iteye.com/post/400274
有朋友说MD5有问题 我觉得没有阿 还是贴下保险
/**
* @functionName: generateMD5
* @description: generate the MD5 digest from 16 byte int to the ASCII format
* @version: 1.0
* @beCareful:16 byte int -> 32 byte ASCII
* @param source
* @return String the 32 byte ASCII MD5
*/
public static String generateMD5(String source)
{
byte[] bSource = source.getBytes();
MessageDigest md = null;
try
{
md = MessageDigest.getInstance("MD5");
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
byte[] md5 = md.digest(bSource);
StringBuffer buff = new StringBuffer();
for(int i = 0; i < md5.length; i++)
{
String byteStr = Integer.toHexString(md5[i] & 0xFF);
if(byteStr.length() < 2) buff.append('0');
buff.append(byteStr);
}
return buff.toString();
}
从jprofile的截图来看
内存的占用集中在Page类的parseHyberlinks方法里面 而且是String没有释放
parseHyberlink方法见前贴
整个程序的开始
是从
private void fetch()
{
while(true)
{
try
{
new FetchWeb().fetch();
}
catch (URISyntaxException e)
{
Log4j.logger.debug(e);
e.printStackTrace();
}
}
}
开始
而在FetchWeb().fetch()中又调用了
public void fetch() throws URISyntaxException
{
String iteratorHashSetUvUrlsNext=UrlDB.pickUrl();
System.out.println("the url we pick: " + iteratorHashSetUvUrlsNext);
WebPageProcessFace tryit = new WebPageProcessFace(iteratorHashSetUvUrlsNext);
try
{
if(tryit.doSomething())
{
//问题会不会这?
if(UrlDB.addUrl(iteratorHashSetUvUrlsNext, tryit.getLinks()))
Log4j.logger.info("addurl ok");
tryit = null;
}
else
{
tryit = null;
}
}
catch (IOException e)
{
tryit = null;
e.printStackTrace();
Log4j.logger.debug(e);
}
tryit = null;
Log4j.logger.info("\n");
Log4j.logger.info("\n");
}
这个地方的程序有点逻辑不清 主要是当时匆匆忙忙做得 本想测试通过了在改 。。。
addUrl的程序在前帖有
我是这样想的 java的内存回收有点像重力场一样 对象没有东西引用了才会回收 但是jprofile的图显示从程序入口开始就一直占着内存 以至于我不能判断出到底是那出错了
最初的判断是从parseHyberlink开始 返回一个url的集合然后将其加入没有访问的url集合,可能就是在这个过程中哪边的String引用没有释放
可能是在addurl()中 或者其他?
我计算了下当时没访问的url的集合中共有100000个数量级的字段 一个字段估计是60个byte 一起就是大约10M数量级
当时已经下载了200M左右的网页数据
但是300min内就泄露了大概70M内存?到底是什么泄露了?由于parseHyberlink方法中一开始得出的link并不是都会加到集合中 而是必须是一个有效的url才行 这样的话 可能也许原始的links会有70M?
S H I T
分享到:
相关推荐
关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解....
不解风情的真相笛卡尔、公主及心形曲线.doc
Struts2和jQuery是两种非常重要的Java Web开发技术。Struts2是一个强大的MVC框架,它简化了基于Java的企业级应用程序开发,而jQuery则是一个高效、简洁的JavaScript库,极大地提升了网页开发的效率和用户体验。在...
【城轨车辆不解编智能称重调簧系统优化研发】是一项针对现代城市轨道交通车辆检修的创新解决方案。随着轨道交通的快速发展,对于车辆的安全性、舒适性和经济性要求日益提高。根据GB3371.83的规定,机车轴重偏差需...
市场策略:麋角不解,水泉难动-0102-中泰证券-50页.pdf
【城轨车辆不解编智能称重调簧系统优化研发】 随着轨道交通的快速发展,对城轨车辆的安全性、舒适性和经济性要求不断提升。根据GB3371.83的规定,机车轴重偏差应控制在平均轴重的2%以内,轮重偏差不得超过平均轮重...
2021年低地板城轨车辆不解编智能称重调簧系统优化方案(完整版).pdf
MATLAB(至少 6.5)将逻辑变量作为每个... 一个限制是压缩的逻辑存储在结构数组中,如果不解压缩它们就不能以有意义的方式进行操作。 我使用这种压缩在内存中存储了许多大型掩码,然后在我准备使用它们时将它们解压缩。
Whats_Clone:标题不解自明
2. **故障设置**:为了模拟单相接地故障,我们需要在特定时刻让其中一相与地形成通路。这可以通过添加一个开关或接触器模型,并在仿真时间达到预设点时改变其状态来实现。例如,可以在某一时间点将A相的电压源与地短...
通过这个薪酬机制-不能不解的危机,可以让我们的工作任务变得更加简单,完成更加顺利,同时薪酬机制-不能...该文档为薪酬机制-不能不解的危机,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
- 硬件要求:至少2.5GHz的CPU,1GB内存,2GB可用硬盘空间,DVD光驱,LCD显示器。 - 软件要求:安装Windows XP操作系统,并预装相关测试软件,如Cpu-Z,Hot CPU Tester Pro,MemTest,3DMark 2005 Free Edition,...
在IT行业中,处理压缩文件是常见的任务之一,尤其是在数据传输、存储和分析中。本文将深入探讨如何在不解压的情况下直接读取ZIP文件,并特别关注如何处理包含中文文件名和内容乱码的问题。我们将以支付宝对账单为例...
SSH版本1.0——基于struts,struts2,spring2,hibernate3 本软件是作者上课时所使用的课件,用于SSH...由于作者个人水平等问题,该课件难免会有各种错误,请读者如发现错误及不解之处,请联系课件作者。 作者:于慧峰
- **垃圾收集(Garbage Collection, GC)**:Java的自动内存管理机制,防止内存泄漏,简化了程序员的工作。 - **平台独立性**:Java字节码可以在任何支持Java的平台上运行,实现了“一次编写,到处运行”。 - **...
在PHP开发中,有时我们需要处理ZIP压缩包,特别是在处理包含图像文件的压缩包时,我们可能需要在不解压缩整个包的情况下直接在网页中显示这些图片。这篇内容将介绍如何使用PHP的Zip File系列函数和`base64_encode`...
这个版本是针对Windows操作系统64位架构设计的,这意味着它可以在运行64位操作系统的计算机上高效地工作,利用更多的系统资源,并支持更大的内存。 【解压与启动】 解压后的Tomcat目录结构通常包括以下几个关键部分...
2. 反相器:三极管可以构建简单的逻辑门电路,如非门,实现信号的逻辑反相。 3. 放大器:三极管的共射极、共基极和共集电极三种放大电路结构,使得它能够作为音频放大电路的核心元件,例如文中提到的9014三极管,常...
网速突然变慢是一种非常常见的网络问题,经常会让用户感到困惑和不解。那么,网速突然变慢的原因是什么呢?下面,我们将从几个方面来探讨网速突然变慢的一些原因。 原因一:CPU 使用率过高 在大多数情况下,网速变...
在处理实际问题时,我们经常需要不解方程直接通过判别式来判断根的性质,这对于简化问题和避免复杂的计算非常有用。例如,方程 2x^2 + 5x - 3 = 0 的判别式 Δ = 5^2 - 4 * 2 * (-3) = 25 + 24 = 49 > 0,这意味着它...