# EarlyJobInit<T>()

> Gathers and caches reflection data for the internal job system's managed bindings.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Jobs](/engine/6000.6/script-reference/unity/jobs.md)
* **Assembly:** UnityEngine.CoreModule

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

### Remarks

Unity is responsible for calling this method: don't call it yourself. 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 IJob\<MyJobType\<T>>) manually for each specialization with RegisterGenericJobTypeAttribute.
