# EarlyJobInit<T>()

> Gathers and caches reflection data for the internal job system's managed bindings. Unity is responsible for calling this method - don't call it yourself.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.ParticleSystemJobs](/engine/6000.3/script-reference/unityengine/particlesystemjobs.md)
* **Assembly:** UnityEngine.ParticleSystemModule

```csharp
public static void EarlyJobInit<T>() where T : struct, IJobParticleSystem
```

### Remarks

When the Jobs package is included in the project, Unity generates code to call EarlyJobInit at startup. This results in the following benefits:

* Job initialization doesn't lazily occur during job scheduling, which would increase the time it takes to schedule a job.
* Burst compiled code may schedule jobs because the reflection part of initialization, which is not compatible with burst compiler constraints, has already happened in EarlyJobInit.

**Note**: While the Jobs package code generator handles this automatically for all closed job types, you must register those with generic arguments (like IJobParticleSystem\<MyJobType\<T>>) manually for each specialization with RegisterGenericJobTypeAttribute.
