社区
Java SE
帖子详情
[求助]java的内存问题
lingyunzhiyu
2013-03-19 03:07:04
用java写的一个服务,其中内存部分采用了DirectByteBuffer和常规的jvm对象。
想象:内部不断增大。
jvm的内存设置700M DirectByteBuffer设置为300M。
不断增加 直到将机器的4个g内存全部吃掉,然后就崩溃。
根据jmap等内存分析,没有任何问题。
有没有人遇到过同类的事情。
...全文
122
4
打赏
收藏
[求助]java的内存问题
用java写的一个服务,其中内存部分采用了DirectByteBuffer和常规的jvm对象。 想象:内部不断增大。 jvm的内存设置700M DirectByteBuffer设置为300M。 不断增加 直到将机器的4个g内存全部吃掉,然后就崩溃。 根据jmap等内存分析,没有任何问题。 有没有人遇到过同类的事情。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dracularking
2013-03-20
打赏
举报
回复
内存用完了没问题?
http://www.udpwork.com/item/3092.html
冰思雨
2013-03-20
打赏
举报
回复
DirectByteBuffer 我记得API中说过,这个对象的使用场景,是不频繁创建和销毁的场景中的。 也就是说,这个对象,一般都用在,程序开始初始化一个这样的缓冲区,之后,就基本不会销毁,或者调整缓冲区的容量了。 据说是因为,这个缓冲区,直接使用操作系统底层的内存空间,分配和释放操作比较耗费操作系统的资源,但是,使用起来(写入数据,读取数据)的效率会比较高。 我估计,楼主爆掉内存的原因,肯定是在程序里面频繁的创建这类缓冲区对象(DirectByteBuffer 对象),因为JVM对已创建的对象的垃圾回收,不是实时的, 并且,这类对象的回收过程很费时费力,所以,这类对象的回收会被滞后和缓慢, 你的程序如果频繁创建这类缓冲区,造成操作系统没有及时回收这类资源,最终内存爆了。 建议楼主,先换成普通的ByteBuffer试试,我们创建缓冲区,一般也不会玩300M这么大,一般上百K就算大的了。
zoeg
2013-03-19
打赏
举报
回复
DirectByteBuffer的内存不在heap范围之内
七神之光
2013-03-19
打赏
举报
回复
内存吃完肯定拒绝服务啊
二十三种设计模式【PDF版】
需要将 J2EE 用对地方,那么只有理解 J2EE 此类框架软件的精髓,那么你才能真正灵活应用
Java
解决你的
问题
,甚至构架出你自 己企业的框架来。(我们不能总是使用别人设定好的框架,为什么不能有我们自己的框架?) ...
java
内存
记录器_不需要dump文件也能定位
内存
泄漏
内存
泄漏检测我不认识喜欢调查
Java
堆转储的人。它们包含的信息太多,以至于确定JVM
内存
...如果不是因为这样做几乎是修复JVM中
Java
内存
泄漏的唯一方法,我想说检查
Java
堆转储根本不值得这么麻烦。或者至少在
Java
F...
java
内存
泄漏的例子_面试官:小伙子先来说一下可能引起
Java
内存
泄露的场景吧...
本文分析一下可能引起
java
内存
泄露的场景:通过 finalize() 方法终结器finalizers的使用是潜在
内存
泄漏
问题
的另一个来源。每当类的 finalize() 方法被重写时,该类的对象不会立即被垃圾回收。相反,GC将它们排队等待...
java
中什么是
内存
泄露_什么是
内存
泄露?
内存
泄漏是用户不感兴趣的任何
内存
使用定义1:用户角度
内存
泄漏这个定义可能有点过于宽泛,特别是,它将包括从未使用过的缓存,
内存
泄漏是困扰开发人员和用户数代人的一大
问题
。不过,术语本身并不像看上去那么明显...
Java
内存
泄漏分析
然而,
Java
并不是杜绝了所有的
内存
问题
, 还是会有
内存
泄漏的
问题
,只不过原因和C++是不一样的,所以出现得比较少。
Java
的
内存
垃圾回收机制是从程序的主要运行对象开始检查引用链,当遍历一 遍后发现没有被引用的...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章