这边有个程序给改了之后发生了内存泄露
但是自己找不出原因
大家看看是哪出错了
这是根据jprofile找出的内存使用不正常的代码
private ArrayList<String> ParseHyperLinks() throws ParserException
{
ArrayList<String> hyperLinks = new ArrayList<String>();
SimpleNodeIterator parseSimpleNodeIterator = null;
if(getContentType().equalsIgnoreCase("text/html"))
{
try
{
Parser parse = new Parser(getHTMLEntity());
parseSimpleNodeIterator = parse.parse(new TagNameFilter("A")).elements();
}
catch (ParserException e1)
{
Log4j.logger.debug(e1);
e1.printStackTrace();
throw new ParserException();
}
while(parseSimpleNodeIterator.hasMoreNodes())
{
String extractLink=new String();
LinkTag link = (LinkTag) parseSimpleNodeIterator.nextNode();
if(link.isHTTPLink())
{
extractLink = link.extractLink().trim();
// Log4j.logger.info(extractLink+"<<<<<<<<<<");
if(extractLink.startsWith("#")) continue;
if(extractLink.startsWith("*")) continue;
if(extractLink.equals("/")) continue;
if(isFilterLink(extractLink)) continue;
if(extractLink.contains(" ")) extractLink = extractLink.split(" ")[0];
if(extractLink.length() > 6)
{
if(!extractLink.substring(0, 4).equals("http"))
{
if(!extractLink.startsWith("/")) extractLink = "/" + extractLink;
extractLink = url + extractLink;
}
}
if(extractLink.length() <= 6)
{
if(!extractLink.startsWith("/")) extractLink = "/" + extractLink;
extractLink = url + extractLink;
}
// Log4j.logger.info(">>>>>>>"+extractLink);
hyperLinks.add(extractLink);
extractLink=null;
}
}
}
return hyperLinks;
}
下面是一个静态方法 我怀疑这里面有些引用在作怪
public static boolean addUrl(String currentUrl, ArrayList<String> Links)
{
Log4j.logger.info("robotsMap: "+RobotsTxtCache.robotsMap.size());
currentUrl=currentUrl.trim();
// first put the just url into the v. collection
vUrlsMD5Collection.put(MD5Generator.generateMD5(currentUrl), currentUrl);
ArrayList<String> robotstxt;
// process the hyberlinks
for(int count=0;count<Links.size();count++)
{
String hl=new String();
hl=Links.get(count);
if(!vUrlsMD5Collection.containsKey(MD5Generator.generateMD5(hl)))
{
int weight = 10;
Url u = null;
try
{
u = new Url(hl);
}
catch (URISyntaxException e)
{
e.printStackTrace();
Log4j.logger.debug(e);
return false;
}
System.out.println(">>>>>"+hl);
weight = u.getPageWeigth(new BFSStrategy());
uvUrlsCollection.get(weight).add(hl);
}
}
Links.clear();
Links.trimToSize();
Links=null;
return true;
}
测试的时候发现内存缓慢上升,曾经8小时后 内存时候用量突破500MB
一直不解是怎么回事,跟踪后发现了parseHyberlinks的调用栈有问题,但是反复研究代码又看不出那边有什么引用没去掉。郁闷中。。。
- 描述: 跟踪到的类内存使用
- 大小: 125.4 KB
- 描述: 对象个数飙长
- 大小: 121.7 KB
- 描述: 就是这个char[]
- 大小: 109.1 KB
分享到:
相关推荐
关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解关于字符的一些不解....
不解风情的真相笛卡尔、公主及心形曲线.doc
市场策略:麋角不解,水泉难动-0102-中泰证券-50页.pdf
【城轨车辆不解编智能称重调簧系统优化研发】是一项针对现代城市轨道交通车辆检修的创新解决方案。随着轨道交通的快速发展,对于车辆的安全性、舒适性和经济性要求日益提高。根据GB3371.83的规定,机车轴重偏差需...
2021年低地板城轨车辆不解编智能称重调簧系统优化方案(完整版).pdf
【城轨车辆不解编智能称重调簧系统优化研发】 随着轨道交通的快速发展,对城轨车辆的安全性、舒适性和经济性要求不断提升。根据GB3371.83的规定,机车轴重偏差应控制在平均轴重的2%以内,轮重偏差不得超过平均轮重...
MATLAB(至少 6.5)将逻辑变量作为每个... 一个限制是压缩的逻辑存储在结构数组中,如果不解压缩它们就不能以有意义的方式进行操作。 我使用这种压缩在内存中存储了许多大型掩码,然后在我准备使用它们时将它们解压缩。
Whats_Clone:标题不解自明
Struts2和jQuery是两种非常重要的Java Web开发技术。Struts2是一个强大的MVC框架,它简化了基于Java的企业级应用程序开发,而jQuery则是一个高效、简洁的JavaScript库,极大地提升了网页开发的效率和用户体验。...
通过这个薪酬机制-不能不解的危机,可以让我们的工作任务变得更加简单,完成更加顺利,同时薪酬机制-不能...该文档为薪酬机制-不能不解的危机,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
在电力系统中,中性点不解地系统是一种常见的配置,特别是在低压配电网络中。这种系统的特点是电力系统的中性点不直接接地,而是通过高阻抗连接或完全悬空。然而,这种系统在运行过程中可能会遇到单相接地故障,即一...
在IT行业中,处理压缩文件是常见的任务之一,尤其是在数据传输、存储和分析中。本文将深入探讨如何在不解压的情况下直接读取ZIP文件,并特别关注如何处理包含中文文件名和内容乱码的问题。我们将以支付宝对账单为例...
- **垃圾收集(Garbage Collection, GC)**:Java的自动内存管理机制,防止内存泄漏,简化了程序员的工作。 - **平台独立性**:Java字节码可以在任何支持Java的平台上运行,实现了“一次编写,到处运行”。 - **...
- 熟悉使用测试软件在不解机的情况下获取计算机硬件参数信息。 - 掌握常见硬件如CPU、内存、显卡、硬盘、光驱等的性能指标。 - 学习计算机组装时如何选择合适的配件。 2. 实验设备: - 硬件要求:至少2.5GHz的...
在PHP开发中,有时我们需要处理ZIP压缩包,特别是在处理包含图像文件的压缩包时,我们可能需要在不解压缩整个包的情况下直接在网页中显示这些图片。这篇内容将介绍如何使用PHP的Zip File系列函数和`base64_encode`...
网速突然变慢是一种非常常见的网络问题,经常会让用户感到困惑和不解。那么,网速突然变慢的原因是什么呢?下面,我们将从几个方面来探讨网速突然变慢的一些原因。 原因一:CPU 使用率过高 在大多数情况下,网速变...
这个版本是针对Windows操作系统64位架构设计的,这意味着它可以在运行64位操作系统的计算机上高效地工作,利用更多的系统资源,并支持更大的内存。 【解压与启动】 解压后的Tomcat目录结构通常包括以下几个关键部分...
三极管,全称双极型晶体管(Bipolar Junction Transistor,BJT),是电子技术中的一个重要组成部分,尤其在模拟电路设计中扮演着不可或缺的角色。它是一种电流控制器件,能够放大电流或用作开关,是现代电子设备中...
而“不解藏踪迹,浮萍一道开”则通过“不解”二字,展现出孩子纯真的无知,他们并不知道自己的行为已经留下了痕迹,这种“不解”正是孩子们无邪的体现。 在诗眼的品读中,“偷采”和“不解”是关键。"偷采"描绘了...