Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System.LimitException:Apex堆大小太大Salesforce_Salesforce_Apex - Fatal编程技术网

System.LimitException:Apex堆大小太大Salesforce

System.LimitException:Apex堆大小太大Salesforce,salesforce,apex,Salesforce,Apex,Map sObjectsToClone=子对象的映射及其关系名称 我必须批量克隆每个opportunity的给定儿童记录 void execute(Database.BatchableContext BC, List<Opportunity> batch) { List<Opportunity> OpportunityList = new List<Opportunity>(); for(Opportunity opp : batch) {

Map sObjectsToClone=子对象的映射及其关系名称

我必须批量克隆每个opportunity的给定儿童记录

void execute(Database.BatchableContext BC, List<Opportunity> batch) {
    List<Opportunity> OpportunityList = new  List<Opportunity>();
    for(Opportunity opp : batch) {
        OpportunityList.add(opp);
    }
    insert OpportunityList;

List<sObject> childObjectStore = new List<sObject>();
for(sObject sob : sObjectsToClone.keySet()) {
    //List<sObject> childObjectStore = new List<sObject>();
    for(Opportunity sOppy : OpportunityList) {
          sObject clone = sob.clone(false, true);
          clone.put(sObjectsToClone.get(sob), sOppy.Id);
          system.debug('Clone :: '+clone);
          childObjectStore.add(clone);
     }
    //insert childObjectStore;
  }
insert childObjectStore;
}
void执行(Database.BatchableContext-BC,List-batch){
列表机会列表=新列表();
对于(Opportunity opp:batch){
机会列表。添加(opp);
}
插入机会列表;
List childObjectStore=新列表();
for(sObject-sob:sObjectsToClone.keySet()){
//List childObjectStore=新列表();
for(Opportunity sOppy:OpportunityList){
sObject clone=sob.clone(false,true);
clone.put(sObjectsToClone.get(sob),sOppy.Id);
system.debug('Clone::'+Clone);
添加(克隆);
}
//插入childObjectStore;
}
插入childObjectStore;
}
如果OpportunityList的大小很小(比如10),则此代码可以正常工作,但如果OpportunityList的大小更大(比如超过100),则会抛出
System.LimitException:Apex堆大小太大:
exception


请提出解决方案

在这段代码之前,我假设您有更多的逻辑,这段代码消耗了大量的堆。您是对的,Chiz,请查看编辑的帖子在这种情况下,我假设您用于检索Opportunity的查询包含很多字段,而不仅仅是Id(您在逻辑中使用的Id)。尝试减少查询中的字段数。您有三个Opportunity列表。首先是批量,然后是具有相同大小和。。。哦,你有一张机会地图。我相信它是有状态的。我认为您应该使用稳定范围(就一批中一次处理的元素数量而言)。感谢Chiz的快速回复,我在stackexchange上发布了与guest相同的问题,因此我无法在此处添加评论:(-这里您说过,它适用于小批量,但是如果我将批量设置为100,并执行代码,它将再次抛出相同的异常。