I’m evaluating the tradeoffs and efficient use of memoization with lengthy vectors, particularly in optimisation. Suppose a vector input to an expensive function has many Float64 elements, say, 100,000. When this function is memoized:

Is the whole vector stored or just some ID/ hashcode?

Is the equality with an incoming vector tested by reference or by value? Does this depend on the number of elements?

How can some of the memoized keys/values be deleted programmatically (e.g., by popping a stack)?

How would the above apply if the input vector was the optimisation variable in JuMP?
Many thanks!