weixin_42297586 2010-06-29 23:02
浏览 182
已采纳

Java如何处理内存疯涨???

事情是这样:
1,有两个进程使用rmi通信,进程A负责向进程B发送信息,进程B负责处理进程。其中A没2秒向B发送一个List对象过来,B则将收到的A发送的List存储起来,因为可能B可能暂时处理不过来
2,A如果发送的List过大,会导致B根本没时间处理,导致B的内存出现井喷现象,甚至出现OutOfMemery错误而挂死
3,我试着修改了GC的各种配置,可还是解决不了问题

请大家能给我支招解决问题,感激不尽!!!

  • 写回答

2条回答 默认 最新

  • weixin_42516107 2010-06-30 02:14
    关注

    你B的进程VM参数中 有没有设置初始内存和最大内存
    你看是否可以这样:
    1、A 向 B发送数据之前,先检测一下B的负载,让B返回一个是否能接收新数据,如果可以接收新数据,就往B发送,如果不能,就过一定时间再发送
    2、看看能否优化一下B的效率,使B能处理得更快,或者把内存的数据先转移。
    3、考虑把B发布成分布式应用,缓解单个应用的压力

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信
  • ¥30 Python调用dll文件输出Nan重置dll状态