Strings, byte arrays and int arrays are commonly used by the .NET Framework. Even though you are not creating them directly, they are often created indirectly by many operations. You can get more information about why the objects are created by investigating the call stacks of them. The instance graph under Type details and Instance details will also give you an idea about why they exist.

2 large heap fragments means that the memory used by the large object heap is allocated in two memory blocks. We don't present "% of free memory" number. Where did you see "100¤ of free memory"?