环境:Solaris 10问题:目录下有一个7G大小的日志文件,里面是文本格式的数据,一条条的现在想用一个Java来读取并处理它,由于文件太大,又要保证性能,请在经验的朋友进来看看
解决方案 »
- JTree 问题 郁闷呀
- isInstance,isAssignableFrom两个方法的用法
- JAVA Socket的read问题
- java通常指的对象锁具体是指什么
- SWT标准控件如何改字体大小?
- 我是一个菜鸟,请教一下这个程序的问题在哪?哪位帮帮忙,感激不尽!!!!!!!!
- 构造函数的问题?
- 递归调用求.....................打印目录下全部文件名称.......................我的方法不好有更好的方法吗?用递归
- linux下jspsmartupload上传表单中文乱码
- jbuilder6不稳定!请有使用经验的来探讨一下是什么原因?
- 如何用图片做边框
- 【请教】JDBC读取Excel数据问题
真的到了GC的时候,Java程序就慢下来了,平时不启动GC的时候,Java就已经稍微有些慢了。
此外,你需要缓存数据的话,可以尝试Java版的BerkleyDB。或者用Python,Python虽然整体比Java慢,但是处理文本它很快,而且它实际上是引用计数实现的。
你不用的数据就立即被释放的。也就是说,你处理的极限是它的极限。但是带有GC的语言,往往没有到极限的时候,很多对象实际早就没用了,还依然占用内存,等到gc的时候,就歇菜了。
发的贴子都没办法修改,tmd
我几年没来了,没想到成这个样子.
引起这个问题的起因主要是syslog-ng监控日志文件的效率太低引起的.
于是就想着自己写个程序来处理,参考了一下Java内存映射的方式,但最大听说只支持2G还是不行,看看还有没有其它办法
刚刚阅读了老兄的贴子,我担心这样处理的效率问题,因为一天就有7g的数据量,我必须要用很高的效率来完成,并且数据读取出来还要进行相应的规则匹配,过滤,入库等操作,不知道还有没有什么别的好办法.另外还有个情况:
此文件可能是时时增长的,也就是说在solaris下,syslog会不停的向这个文件中写内容,同时我们的处理程序要不停的把日志的内容读取出来,不知道写入和读取同时进行的情况下效率会怎么样
不明白C++与JAVA在处理文件读取上的区别,至少从接口上,没有看出来不知道你是要匹配的高效率呢还是要读取的高效率,如果读取能够跟上匹配的速度, 那么我觉得对于读取的方法的选择就是正确而到位的.
我是个菜鸟,希望LZ能够比较下现在的速度瓶颈在哪里.
作为一个菜鸟,我想问的事情比较幼稚:
像OPENGL这样的图形引擎在处理数据较大的图象数据时,提供了双缓存模式,一个用于读取,一个用于处理,不知道JAVA有没有这样的缓存机制呢??
如果这样都不能满足匹配的速度的话...惊讶于LZ家的匹配算法太高效了点....可以发出来大家学习学习我是菜鸟,菜言无忌
初步用Java做了一下测试,读取文件方面还是挺快的4G大小的文件,用了907秒,性能还是不错的,现在的问题是,Java如何来监控一个文件的增长,当文件被写入新的数据时,如何让程序把新加入的数据取出并做相应的处理?不知道有谁有过此方面的经验
没经验..
一般写文件的时候都会把文件锁定...没研究过Solaris源码,不好评论
你可以看看Solaris内核,肯定能有更有效的方法解决
1 每天写一个
2 每月写一个
3 每1G 写一个
就连Oracle 都要使用 partition 技术来分割数据库文件,我们为何不自己也分割呢?
我们当然不愿意处理这么大的文件,但这是客户的需求,没办法,他们就要这样做。Java监控文件的增长不好解决
用java读取一定格式的数据文件,更新到数据库中。学习中.......
缓的大小可以跟据活动空间调整,
这样可能相对可以提高一点点