I'm not proud of this, but I'm not sure there's a better way of doing this.

Context: texture sheets are massive, so I wanted them to be gced when possible. Problem is, during init, the gc kept collecting the sheets, which added a full 5-10 seconds to load times.

This ensures that the sheets stay in memory until everything is initialized.

  • 2
    Whenever you have to fight the "gc" there is a better way to design it. You have to find the actual root cause of it.

    Another way is to use Java Native Interface (JNI) to write it in C/C++ which you can handle the memory however you want.
  • 1
    Sounds like it's time for some O(n log n) optimization
  • 3
    This is one of these situations in which I realize the benefit of being able to go low level

    Manual memory management can be a pain, but it is necessary from time to time
  • 0
    @LotsOfCaffeine how the hell does one do assembly in modern times? Or are you referring to demoscene or retrocoding stuff?
  • 1
    @mr-user So much this. a) JNI is great and b) whenever you have to start fiddling with the GC you most likely already fucked up somewhere.
  • 2
    @Parzi I was guessing they were talking about C++/C *shrug*
  • 1

    we are talking about C/C++


    If you have to mess with "gc" you are fucked due to design error. Try to fix up the design.

    If you cannot fix up the design due to constraint or cannot think up of anything else, use JNI.
  • 0
    @Maer @mr-user how do you manually lay out memory in C?
  • 1
    @mr-user That is what I said. We were in agreement.
  • 3
    @Parzi They just mentioned "memory management" which is rather broad.

    A list of things that can be considered memory management, descending from highlevel to lowlevel:

    - GC calls in Java, then hoping the GC actually collects unreferenced objects

    - C++ allocation via new and deallocation via destructor

    - C alloc calls

    - Assembly level memory mapping

    Since there is reference to JNI, this is probably just about C++ memory allocation - at least I think so.
  • 0
    @Maer you missed the "manual" part?
  • 2
  • 1
    @LotsOfCaffeine It’s really quite sad that some developers think C++ is low level

    Edit: algo necro 🙁
  • 0
    @Root when I say low level I usually talk about C
    I'm not a huge fan of C++
  • 0
    @LotsOfCaffeine Neither despite using it for years.

    To me, “low level” means straight assembly or “high-level assembly” compilers. C feels pretty standard to me, or a little lower.
Add Comment