How are your 3D Tiles generated? Have you tried uploading the source data to Cesium ion (https://cesium.com/ion/) to see if that produces a tileset that performs well/doesn’t crash? A big factor here is how big each tile is, how compressed the tiles are, and the geometric error computed for each tile. The Cesium ion tiling pipeline is also available as on-premise CLI if you need to run this locally or on your own architecture (see https://cesium.com/docs/on-premise/).
Otherwise, I think the biggest thing that might help here is decreasing the maximumMemoryUsage:
https://cesium.com/docs/cesiumjs-ref-doc/Cesium3DTileset.html#maximumMemoryUsage
Skip levels generally helps load the tileset faster, by avoiding having to load and unload all the tiles down the chain, but it shouldn’t impact the memory used too much I think. You can read a bit more about the skip level of detail algorithm in CesiumJS here: https://cesium.com/blog/2017/05/05/skipping-levels-of-detail/