file-solaris 内存溢出问题

问题描述

solaris 内存溢出问题
编译器版本
Reading specs from /usr/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.3/specs
Configured with: /sfw10/builds/build/sfw10-patch/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw --with-as=/usr/ccs/bin/as --without-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=cc++ --enable-shared
Thread model: posix
gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath)

test.h:
include
#include
#include
#include
#include
#include
#include
#define MAX_DATE_STR_LEN 30
#define SECONDS_PER_DAY 3600 * 24
#define PATH_TOKEN ""/""
#define FILE_TYPE_DIR 0
#define FILE_TYPE_OTHER 1
#define FILE_TYPE_NORMAL_FILE 2
int const FILETYPECOUNT=6 ;
using namespace std;
using std::vector;
using std::string;
struct FileInfoSole{
string Name; /* 316304274376303373 /
string Path; /
316304274376302267276266 /
string FullPath; /
316304274376310253302267276266 /
long FileId; /
316304274376261352312266 /
int Result; /
264246300355275341271373 /
int Reason; /
322354263243324255322362 /
string ReasonDesc; /
322354263243303350312366 /
int Type; /
316304274376300340320315 /
long Size; /
316304274376263244266310 /
string CreateTime; /
264264275250310325306332 /
string ErrFile; /
264355316363316304274376303373 /
string TmpErrFile; /
301331312261264355316363316304274376 */
string FileType;
};
typedef vector FileListSole;

test.cpp:
#include ""test.h""
using namespace std;
int GetFileListSole(string dir FileListSole &fileListstring substr int flag);
string tttypes[FILETYPECOUNT]={""CUST""USER""RED""HT""LT""MH""};
int main(){
string dir=""./so/"";
FileListSole fileList;
string substr;
GetFileListSole(dirfileListsubstr0);
return 0;
}
int GetFileListSole(string dir FileListSole &fileListstring substr int flag){
DIR *pDir = NULL;
if ( ( pDir = opendir(dir.c_str()) ) == NULL ){
return false;
}

    int      retCode = 0;FileInfoSole fileInfoSole;    cout<<""link sole""<<endl;    cout<<fileInfoSole.Name<<endl;    cout<<fileInfoSole.Name<<endl;    cout<<fileInfoSole.Name<<endl;    struct dirent  entry;    struct dirent *result;    cout<<""4""<<fileInfoSole.Name<<endl;    //for( retCode = readdir_r( pDir &entry &result ); result != NULL && 0 == retCode; retCode = readdir_r( pDir &entry &result ) )    retCode = readdir_r( pDir &entry &result );    for(int i=0 ;i< 4;i++)    {            retCode = readdir_r( pDir &entry &result );    cout<<""5""<<fileInfoSole.Name<<endl;//循环第一次时,程序在这个地方蹦会了,出现段错误,郁闷彻底,求大侠帮助             if( strcmp( entry.d_name."" ) == 0 ||strcmp( entry.d_name.."") == 0)             {                    continue;             }    cout<<""testa""<<endl;    cout<<fileInfoSole.Name<<endl;    cout<<""---""<<endl;            fileInfoSole.Name = entry.d_name;    //      cout<<fileInfoSole.Name<<endl;    cout<<""testb""<<endl;            if (substr!="""")            {                    if (fileInfoSole.Name.find(substr)==string::npos)                    {                            //printf(""%sn""fileInfoSole.Name.c_str());                            continue;                    }                    else                    {                            //printf(""%sn""fileInfoSole.Name.c_str());                            fileInfoSole.FileType=substr;                    }            }else            {                    fileInfoSole.FileType=string("""");                    for(int k=0;k<FILETYPECOUNT;k++)                    {                            if (fileInfoSole.Name.find(tttypes[k])!=string::npos)                            {                                    fileInfoSole.FileType=string(tttypes[k]);                                    break;                            }                    }            }            //printf(""%sn""fileInfoSole.Name.c_str());             fileInfoSole.Path = dir;             fileInfoSole.FullPath.clear();             fileInfoSole.FullPath.append(dir).append(PATH_TOKEN).append(entry.d_name);            //GetFileInfo( fileInfoSole );             if ( FILE_TYPE_NORMAL_FILE == fileInfoSole.Type ){                 //fileList.push_back(fileInfoSole);             }             if ( FILE_TYPE_DIR == fileInfoSole.Type )             {                if (flag)                {                    GetFileListSole(fileInfoSole.FullPathfileListsubstr flag);                }             }    }    closedir(pDir);    cout<<""over""<<endl;    return true;

}

so文件夹:
-bash-3.2$ ls -l so
total 0
-rw-r--r-- 1 bill bill 0 Apr 10 18:30 fileiiiiiiiiiiiiii
执行程序:
-bash-3.2$ ./a.out
link sole

4
5
Segmentation Fault (core dumped)
-bash-3.2$
我就想问程序到cout<<""5""<<fileInfoSole.Name<<endl;个语句是报段错误,我猜测是系统调用导致的内存泄露,于是我在程序
FileInfoSole fileInfoSole;和struct dirent entry; 之间放了一个int solearr[200];
数组,就不会出现段错误了或者把so文件夹下的文件fileiiiiiiiiiiiiii改成短一点的file的时就不会出现段错误了,请问这是什么原因导致的,有什么更好的办法解决这个问题,越详细细越好,等代大神解决.....

时间: 2024-08-03 19:48:04

file-solaris 内存溢出问题的相关文章

WPF循环加载图片导致内存溢出如何解决

程序场景:一系列的图片,从第一张到最后一张依次加载图片,形成"动画". 生成BitmapImage的方法有多种: 1.var source=new BitmapImage(new Uri("图片路径",UriKind.xxx)); 一般的场景使用这种方法还是比较方便快捷,但是对于本场景,内存恐怕得爆.2. var data =File.ReadAllBytes("图片路径"); var ms = new System.IO.MemoryStrea

Android加载图片内存溢出问题解决方法

  这篇文章主要介绍了Android加载图片内存溢出问题解决方法,本文讲解使用BitmapFactory.Options解决内存溢出问题,需要的朋友可以参考下 1. 在Android软件开发过程中,图片处理是经常遇到的. 在将图片转换成Bitmap的时候,由于图片的大小不一样,当遇到很大的图片的时候会出现超出内存的问题,为了解决这个问题Android API提供了BitmapFactory.Options这个类. 2. 由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出.Bi

关于PHP内存溢出问题的解决方法

一.内存溢出解决方案在做数据统计分析时,经常会遇到大数组,可能会发生内存溢出,这里分享一下我的解决方案.还是用例子来说明这个问题,如下: 假定日志中存放的记录数为500000条,那么解决方案如下: 复制代码 代码如下: ini_set('memory_limit','64M'); //重置php可以使用的内存大小为64M,一般在远程主机上是不能修改php.ini文件的,只能通过程序设置.注:在safe_mode(安全模式)下,ini_set失效 set_time_limit(600);//设置超

Tomcat 内存溢出对应解决方式

阅读目录 1.Tomcat内存溢出的原因 2.OutOfMemoryError 堆内存溢出 3.OutOfMemoryError 永久保存区域溢出 3.OutOfMemoryError 无法创建新的线程   回到顶部 1.Tomcat内存溢出的原因 生产环境中Tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种情况: OutOfMemoryError: Java heap space Ou

大神帮帮忙-递归一个文件夹下的所有文件以及文件夹,造成内存溢出问题

问题描述 递归一个文件夹下的所有文件以及文件夹,造成内存溢出问题 我需要递归一个文件夹下所有的文件并进行操纵,文件夹下也有文件夹,我用一个list存储递归得到的所有文件可能会造成溢出.我需要当此list为10000时候执行,然后清空list,请问如何实现.代码如下: static void getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File fil

outofmemory-Java程序中Jsoup解析大量html内存溢出,资源没有回收,内存一直增长

问题描述 Java程序中Jsoup解析大量html内存溢出,资源没有回收,内存一直增长 Java程序中Jsoup解析大量html内存溢出,资源没有回收,内存一直增长 [code="java"] 最近要改别人写的一个解析html入库的程序,原本没有抽取正文的代码,就自己找了一个放了进去,是根据Jsoup解析写的,运行之后发现Jsoup解析大量html内存溢出,资源没有回收,内存一直增长.设1G的内存也就解析了几十万的页面就崩了.查了半天之后也没找到定位到,具体是哪个参数的内存一直增加也没

weblogic oom分析-weblogic内存溢出outofmemory日志分析

问题描述 weblogic内存溢出outofmemory日志分析 软件环境: aix 6.1+weblogic10.3+oracle11系统每天同时在线人数100左右,数据库的数据量有多张频繁操作的表数据记录在千万以上,主要后台自动处理线程过多.系统前段时间运行一直正常,只是从7月底出现OOM最近差不多半个月出现一次.对weblogic产生的phd文件和javacore文件分析的不太清楚...以下是javacore的日志: WARNING Java heap is almost exhauste

Android 内存溢出解决方案(OOM) 整理总结

在最近做的工程中发现加载的图片太多或图片过大时经常出现OOM问题,找网上资料也提供了很多方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有效果也有结果,今天小马就做个详细的总结,以供朋友们共同交流学习,也供自己以后在解决OOM问题上有所提高,提前讲下,片幅有点长,涉及的东西太多,大家耐心看,肯定有收获的,里面的很多东西小马也是学习参考网络资料使用的,先来简单讲下下:   一般我们大家在遇到内存问题的时候常用的方式网上也有相关资料,大体如下几种:   一:在内存引用上做些

Java内存溢出(OOM)异常完全指南

我的职业生涯中见过数以千计的内存溢出异常均与下文中的8种情况相关.本文分析什么情况会导致这些异常出现,提供示例代码的同时为您提供解决指南. 这也许是目前最为完整的Java OOM异常的解决指南. 1.java.lang.OutOfMemoryError:Java heap space Java应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen(永久代): JVM内存模型示意图 这两个区域的大小可以在JVM(Java虚拟机)启动时通过参