大神们帮忙看看Java通信机运行所耗内存,提提优化建议!!谢谢了!
程序为高清卡口摄像机车牌识别服务,为Server端。
目前有将近80台高清卡口摄像机通过3G路由器连接本服务。
每张图片大概3,4百KB,每天接收图片数据量大概十几个GB。
还需要做计算空车位的处理,还有每分钟一次的心跳检测。
通过JNA调用DLL监听数据接收,上次重启服务时间10月30日。
以下为当前11月14日14点38分(非早晚高峰期)占用CPU和内存使用情况
大神们,帮我看看这些情况怎么样,给我提提优化的建议。
系统是 windows server 2008
数据库为 sql server 2005
连接池为 proxool
我感觉占用内存有点高,而且是每日递增,线程数也有点多。
堆
permGen
eden space
survivor space
perm gen
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(27)
原来是这个原因啊,我说怎么虚拟机只能识别4G呢。。。
回复
系统64的 JDK 32的
32 还是64系统啊 还有jdk 32位还是 64位的额
p
roxool 不是最渣的连接池么?
回复
太不好意思,我有点事处理
回复
又贴了三张图!
回复
好,刚到公司,稍等!
回复
tenured gen 的图哈
额。。。本来用的是DBCP,后来在本地可以,到服务器上获取不到数据源,就换了。。。。
首先permgen 设置大了 128m就行 ,然后 基本 老年代 是没有东西的 占用小而且 full gc基本没发生看图觉得 , 所以 可以调下 老年代跟 新生代比率 ,让新生代 大点,这样minor gc就少了, 再看新生代 基本 都是 满了触发的 minor gc, 加大点 新生代 内存 可以 减少 minor gc次数,而且 大部分 全是临时对象, minor gc一下就没了, 基本没有 存活到 老年代的
上面 是我 看到图 想说的 , 新生代 老年代 比率还是 不调好 默认 1:2,可以试试1:1的其实,然后32位 jdk,可以识别3g多,堆感觉2g就好,然后多核的话新生代用个并行收集器 pernew gc
-Xms2048m -Xmx2048m -XX:PermSize=128M -XX:+UseParNewGC
设置更大新生代比率 下面就是
-XX:NewRatio=1
这些调优 可以减少 gc时间,最大限度利用硬件资源吧,其他感觉没啥作用了
回复
现在 jvm多久 minor gc一次啊,有没有卡顿现象,能 在发个 截图不
我得好好学学你说的这些。。。
回复
tenured gen 的图哈 ,明天 给回复把, 我今天 好好仔细看下的哈 好不,不用等我了就= =
|等吃完饭再搞吧!辛苦了!
GC参数用的是什么? 要不把JVM的参数贴出来大家一起看下?
回复
PermSize=512M设大了 ,发个 jconsole 新生代 老年代图吧 看看 minor gc 跟 full gc 时间 真心 可以优化的啊 亲
我的年轻态是这样设置的。 java -Xms1024m -Xmx1024m -XX:PermSize=512M -cp ..... 16GB的内存我不明白为什么只能设置这些,设置大了程序就会报错。
jconsole里面有 新生代 老年代 的图,我看到你堆内存每次回收后都很小,也就是说 老年代可能使用很少 大部分都是 一次mini gc 就全回收了 你那样参数 还能优化的 ,发个 新生代 老年代图吧 我再看遍书 等我下好吧
图片是直接从DLL中拿到字节数组然后存入本地硬盘,我确实不太会表达,就是感觉内存占用的太高,设置的年轻态都用光了估计程序就挂掉了,还有用360清理内存后程序也会挂掉,报致命错误。
回复
360优化不要用,他会关掉服务的
描述的程序不清楚,相帮也没法帮啊,图片分析用的java吗?nio 还是啥?还是java从dll里面拿到结果,不跟图片打交道?
有好心大神来看看吗?
回复
我理解错了 = =| 不要给我了 浪费你时间了 是我理解错了 permgen 我以为 permgen是老年代的
不好意思哈
回复
已经修改帖子了。。。手动执行GC回收没反应。。
回复
不再的,我没怎么用过,没有的,只有堆的
回复
嗯嗯,谢谢,学习了