Run Future Methods with Higher Limits (Pilot)

Avoid reaching governor limits in your asynchronous future method by running your method with double or triple capacity for a resource.
Note

Note

This feature is currently available through a pilot program. For information about enabling enhanced future methods for your organization, contact salesforce.com.

Apex future methods (methods that are annotated with @future) currently have the higher asynchronous limits for heap size, CPU timeout, and number of SOQL queries. This pilot enables you to specify even higher values for these and for additional limits in future methods. If you were exceeding a governor limit in your future method, or if you think a future method requires a higher limit, you can increase this limit for your future method.

Note

Note

Running future methods with higher limits might slow down the execution of all your future methods.

One of the following limits can be doubled or tripled for each future method.
  • Heap size
  • CPU timeout
  • Number of SOQL queries
  • Number of DML statements issued
  • Number of records that were processed as a result of DML operations, Aprroval.process, or Database.emptyRecycleBin
The higher limit is specified in the method definition as part of the @future annotation by using the limit parameter, in the following syntax:
@future(limits='2x|3xlimitName')
For example, to double the amount of heap size that is allowed in your future method, define your method as follows:
@future(limits='2xHeap')
public static void myFutureMethod() {
    // Your code here
}
Tip

Tip

Keep in mind that you can specify only one higher limit per future method. Decide which of the modifiable limits you need the most for your method.

The following limit modifiers are supported. The string value passed to the limits parameter inside the annotation is case-insensitive.

Modifier Description
@future(limits='2xHeap') Heap size limit is doubled (24 MB).
@future(limits='3xHeap') Heap size limit is tripled (36 MB).
@future(limits='2xCPU') CPU timeout is doubled (120,000 milliseconds).
@future(limits='3xCPU') CPU timeout is tripled (180,000 milliseconds).
@future(limits='2xSOQL') Number of SOQL queries limit is doubled (400).
@future(limits='3xSOQL') Number of SOQL queries limit is tripled (600).
@future(limits='2xDML') Number of DML statements limit is doubled (300).
@future(limits='3xDML') Number of DML statements limit is tripled (450).
@future(limits='2xDMLRows')1 Number of records that were processed as a result of DML operations is doubled (20,000).
@future(limits='3xDMLRows')1 Number of records that were processed as a result of DML operations is tripled (30,000).

1 Includes Aprroval.process and Database.emptyRecycleBin operations.