Из ваших комментариев я не думаю, что вам на самом деле нужно знать, будет объект на LOH или нет. Является ли это фактической причиной замедления работы вашего приложения, не имеет значения, когда все, что вы действительно хотите сделать, это отображать предупреждение пользователю, когда он вводит значение, которое «слишком велико».
Поэтому я бы предложил кое-что попроще: просто используйте метод проб и ошибок, чтобы определить значение отсечения. Если они введут размер, превышающий значение проб и ошибок, отобразите предупреждение.
Что касается ваших реальных проблем с производительностью, вместо выделения одного большого двумерного массива вы можете просто выделить группу «меньших» одномерных массивов. Вместо:
Node[,] n = new Node[100,100]; // this will go the LOH
Вы бы сделали это:
Node[][] n = new Node[100][];
for(int i = 0; i < n.Length; i++) {
n[i] = new Node[100]; // none of these will be on the LOH
}
У вас все равно будет одинаковое количество узлов, но на LOH ничего не будет. Лично я думаю, что вы, вероятно, обнаружите, что производительность на самом деле не сильно отличается, но, возможно, стоит просто попробовать.