News for hackers. Stuff that matters.
Re:Swift at Apple: Migrating the Password Monitoring Service... by tiffanyh on Tuesday June 03, 2025 @01:58PM (#44172753)
I'd typically agree with your comment but ...

Given that they also experienced a 90% reduction in Memory Usage (presumably from Java GC vs Swift AOT memory management) - it seems more likely the gains are in fact from the difference in languages.

Re:Swift at Apple: Migrating the Password Monitoring Service... by plorkyeran on Tuesday June 03, 2025 @02:14PM (#44172920)
The typical rule of thumb is that getting good performance out of tracing GC requires doubling your memory usage, so a 90% reduction suggests that they made significant improvements on top of the language switch.
Re:Swift at Apple: Migrating the Password Monitoring Service... by username223 on Tuesday June 03, 2025 @02:32PM (#44173126)
I remember the 2x rule from 20 years ago - do you know if things have changed? If locality is more important now, tracing GC might never be as performant as reference counting. Either you use 2x the memory and thrash your cache, or you use less and spend too much CPU time collecting.
Re:Swift at Apple: Migrating the Password Monitoring Service... by jeroenhd on Tuesday June 03, 2025 @02:55PM (#44173347)
Java has had AOT compilation for a while, so traditional GC and its massive overhead are no longer a strict necessity. Even AOT Java will probably stay behind Swift or any other natively compiled language in terms of memory usage, but it shouldn't be that drastic.

As for performance and locality, Java's on-the-fly pointer reordering/compression can give it an edge over even some compiled languages in certain algorithms. Hard to say if that's relevant for whatever web framework Apple based their service on, but I wouldn't discount Java's locality optimisations just because it uses a GC.

Re:Swift at Apple: Migrating the Password Monitoring Service... by username223 on Tuesday June 03, 2025 @04:27PM (#44174355)
> Java has had AOT compilation for a while, so traditional GC and its massive overhead are no longer a strict necessity.

You mean it does escape analysis and stack-allocates what it can? That would definitely help, but not eliminate the GC. Or are you thinking of something else?

Thinking about it more, I remember that Java also has some performance-hostile design decisions baked in (e.g. almost everything's an Object, arrays aren't packed, dynamic dispatch everywhere). Swift doesn't have that legacy to deal with.

Re:Swift at Apple: Migrating the Password Monitoring Service... by acdha on Tuesday June 03, 2025 @06:39PM (#44175541)
Java also has a lot of culture making optimization-resistant code so there’s the question of whether you’re talking about the language itself or various widespread libraries, especially if they’re old enough to have patterns designed around aesthetics or now-moot language limitations rather than performance.

I’ve replaced Java code with Python a few times and each time even though we did it for maintenance (more Python devs available) we saw memory usage more than halved while performance at least doubled because the code used simpler functions and structures. Java has a far more advanced GC and JIT but at some point the weight of code and indirection wins out.

Re:Swift at Apple: Migrating the Password Monitoring Service... by winrid on Tuesday June 03, 2025 @09:41PM (#44176489)
That's interesting. I did a line by line rewrite of a large Django route to Quarkus and it was 10x faster, not using async or anything.
Re:Swift at Apple: Migrating the Password Monitoring Service... by acdha on Wednesday June 04, 2025 @07:41AM (#44179613)
That’s why I said “culture” - by all rights the JVM should win that competition. I wrote a bit more about the most recent one in a sibling comment but I’d summarize it as “the JVM can’t stop an enterprise Java developer”.

https://news.ycombinator.com/item?id=44179589

Re:Swift at Apple: Migrating the Password Monitoring Service... by pjmlp on Wednesday June 04, 2025 @09:26AM (#44180499)
Enterprise developers and architects would be the same, regardless of the programming language.

I am old enough to have seen enterprise C and C++ developers.

Where do you think stuff like DCE, CORBA, DCOM has come from?

Also many of the things people blame Java for, where born as Smalltalk, Objective-C and C++ frameworks before being re-written in Java.

Since we are in a Apple discussion thread, here is some Objective-C ids from Apple frameworks,

https://github.com/Quotation/LongestCocoa

I also advise getting hold of the original WebObjects documentation in Objective-C, before its port to Java.

Re:Swift at Apple: Migrating the Password Monitoring Service... by acdha on Wednesday June 04, 2025 @03:05PM (#44184315)
> Enterprise developers and architects would be the same, regardless of the programming language.

This is true to some extent but the reason I focused on culture is that there are patterns which people learn and pass on differently in each language. For example, enterprise COBOL programmers didn’t duplicate data in memory to the same extent not only due hardware constraints but also because there wasn’t a culture telling every young programmer that was the exemplar style to follow.

I totally agree about C++ having had the same problems but most of the enterprise folks jumped to Java or C# which felt like the community of people writing C++ improved the ratio of performance sensitive developers. Python had a bit of that, especially in the 2000s, but a lot of the Very Serious Architects didn’t like the language and so they didn’t influence the community anywhere near as much.

I’m not saying everyone involved are terrible, I just find it interesting how we like to talk about software engineering but there are a lot of major factors which are basically things people want to believe are good.

Re:Swift at Apple: Migrating the Password Monitoring Service... by throwaway2037 on Tuesday June 03, 2025 @11:52PM (#44177067)

    > I’ve replaced Java code with Python a few times ... while performance at least doubled
Are you saying you made Python code run twice as fast as Java code? I have written lots of both. I really struggle to make Python go fast. What am I doing wrong?
Re:Swift at Apple: Migrating the Password Monitoring Service... by acdha on Wednesday June 04, 2025 @07:38AM (#44179589)
More precisely, when deploying the new service microservice it used less than half as much CPU to process more requests per second.

This is not “Java slow, Python fast” – I expected it to be the reverse – but rather that the developers who cranked out a messy Spring app somehow managed to cancel out all of the work the JVM developers have done without doing anything obviously wrong. There wasn’t a single bottleneck, just death by a thousand cuts with data access patterns, indirection, very deep stack traces, etc.

I have no doubt that there are people here who could’ve rewritten it in better Java for significant wins but the goal with the rewrite was to align a project originally written by a departed team with a larger suite of Python code for the rest of the app, and to deal with various correctness issues. Using Pydantic for the data models not only reduced the amount of code significantly, it flushed out a bunch of inconsistency in the input validation and that’s what I’d been looking for along with reusing our common code libraries for consistency. The performance win was just gravy and, to be clear, I don’t think that’s saying anything about the JVM other than that it does not yet have an optimization to call an LLM to make code less enterprise-y.

Re:Swift at Apple: Migrating the Password Monitoring Service... by throwaway2037 on Wednesday June 04, 2025 @04:39PM (#44185253)
Okay, I understand your point. Basically, you rewrote an awful (clickbat-worthy) enterprisey Java web app into a reasonable, maintainable Python web app. I am sympathetic. Yes, I agree: I have seen, sadly, far more trashy Java enterprisey apps than not. Why? I don't know. The incentives are not well-aligned.

As a counterpoint: Look at Crazy Bob's (Lee/R.I.P.) Google Guice or Norman Maurer's Netty.IO or Tim Fox's Vert.x: All of them are examples of how to write ultra-lean, low-level, high-performance modern Java apps... but are frequently overlooked to hire cheap, low-skill Java devs to write "yet another Spring app".

Re:Swift at Apple: Migrating the Password Monitoring Service... by acdha on Wednesday June 04, 2025 @08:39PM (#44187159)
> but are frequently overlooked to hire cheap, low-skill Java devs to write "yet another Spring app".

Yeah, that’s why I labeled it culture since it was totally a business failure with contracting companies basically doing the “why hire these expensive people when we get paid the same either way?” No point at ranting about the language, it can’t fix the business but unfortunately there’s a ton of inertia around that kind of development and a lot of people have been trained that way. I imagine this must be very frustrating for the Java team at Oracle knowing that their hard work is going to be buried by half of the users.

Re:Swift at Apple: Migrating the Password Monitoring Service... by p2detar on Thursday June 05, 2025 @01:38PM (#44193876)
IMO the “Spring fever” is the most horrible thing that has happened to Java. There genuinely are developers and companies that reduce the whole language and its ecosystem to Spring. This is just sad. I’m glad that I have been working 15+ years with Java and never touched any Spring stuff whatsoever.
Re:Swift at Apple: Migrating the Password Monitoring Service... by pjmlp on Wednesday June 04, 2025 @03:22AM (#44178042)
For a while means since around 2000, althought toolchains like Excelsior JET and Websphere Real Time, among others, were only available to companies that cared enough to pay for AOT compilers, and JIT caches.

Nowadays to add to your comment, all major free beer implementations, OpenJDK, OpenJ9, GraalVM, and the ART cousin do AOT and JIT caches.

Even without Valhala, there are quite a few tricks possible with Panama, one can manually create C like struct memory layouts.

Yes it is a lot of boilerplate, however one can get around the boilerplate with AI (maybe), or just write the C declarations and point jextract to it.

Re:Swift at Apple: Migrating the Password Monitoring Service... by cogman10 on Tuesday June 03, 2025 @06:32PM (#44175491)
It all depends, but one major advantage of the way the JVM GCs is related memory will tend to be colocated. This is particularly true of the serial, parallel, and G1GC collectors.

Let's say you have an object that looks like A -> B -> C. Even if the allocation of A/B/C happened at very temporally different times and inbetween different allocations, the next time the GC runs as it traverses the graph it will see and place in memory [A, B, C] assuming A is still live. That means even if the memory originally looks something like [A, D, B, Q, R, S, T, C] the act of collecting and compacting has a tendency to colocate.

Re:Swift at Apple: Migrating the Password Monitoring Service... by username223 on Tuesday June 03, 2025 @07:05PM (#44175727)
That's the theory -- a compacting collector will reduce fragmentation and can put linked objects next to each other. On the other hand, a reference count lives in the object, so you're likely using that cache line already when you change it.

I don't know which of these is more important on a modern machine, and it probably depends upon the workload.

Re:Swift at Apple: Migrating the Password Monitoring Service... by cogman10 on Tuesday June 03, 2025 @07:50PM (#44175981)
The problem is memory colocation not RC management. But I agree, it'll likely be workload dependent. One major positive aspect of RC is the execution costs are very predictable. There's little external state which can negatively impact performance (like the GC currently running).

The downside is fragmentation and the CPU time required for memory management. If you have an A -> B -> C chain where A is the only owner of the B and B is the only owner of C, then when A hits 0, it has to do 2 pointer hops to deallocate B and then deallocate C (plus arena management for the deallocs).

One of the big benefits of JVM moving style collectors is that when A dies, the collector does not need to visit B or C to deallocate them. The collector only visits and moves live memory.

Re:Swift at Apple: Migrating the Password Monitoring Service... by dwaite on Wednesday June 04, 2025 @01:24AM (#44177472)
> The downside is fragmentation and the CPU time required for memory management. If you have an A -> B -> C chain where A is the only owner of the B and B is the only owner of C, then when A hits 0, it has to do 2 pointer hops to deallocate B and then deallocate C (plus arena management for the deallocs).

I suspect this puts greater emphasis on functionality like value types and flexibility in compositionally creating objects. You can trend toward larger objects rather than nesting inner objects for functionality. For example, you can use tagged unions to represent optionality rather than pointers.

The cost of deep A->B->C relationships in Java comes during collections, which still default to be halting. The difference is a reference counting GC will evaluate these chains while removing objects, while a reference tracking GC will evaluate live objects.

So, garbage collection is expensive for ref-counting if you are creating large transient datasets, and is expensive for ref-tracking GC if you are retaining large datasets.

Re:Swift at Apple: Migrating the Password Monitoring Service... by geodel on Tuesday June 03, 2025 @02:59PM (#44173405)
That is just GC part. Another big difference is Reference type (Java) vs Value Type (Swift).
Re:Swift at Apple: Migrating the Password Monitoring Service... by mrighele on Tuesday June 03, 2025 @04:44PM (#44174515)
The 90% reduction doesn't necessarily have to be related only to GC.

In my experience Java is a memory hog even compared to other garbage collected languages (that's my main gripe about the language).

I think a good part of the reason is that if you exclude primitive types, almost everything in Java is an heap-allocated object and Java objects are fairly "fat": every single instance has an header of between 96 and 128 bit on 64-bit architectures [1]. That's... a lot. Just by making the headers smaller (the topic of the above link) you can get 20% decrease in heap usage and improvements in cpu and GC time [2].

My hope is that once value classes arrive [3][4], and libraries start to use them, we will see a substantial decrease in heap usage in an average java app.

[1] https://openjdk.org/jeps/450

[2] https://openjdk.org/jeps/519

[3] https://openjdk.org/jeps/401

[4] https://www.youtube.com/watch?v=Dhn-JgZaBWo

Re:Swift at Apple: Migrating the Password Monitoring Service... by cogman10 on Tuesday June 03, 2025 @06:23PM (#44175431)
The java GC approach is somewhat unique compared to other languages. There are multiple GCs and pretty much all of them are moving collectors. That means the JVM fairly rarely ends up freeing memory that it's claimed. A big spike will mean that it holds onto the spike's amount of memory.

Many other GCed languages, such as swift, CPython, Go, do not use a moving collector. Instead, they allocate and pin memory and free it when not in use.

The benefit to the JVM approach is heap allocations are wicked fast on pretty much all its collectors. Generally, to allocate it's a check to see if space is available and a pointer bump. For the other languages, you are bound to end up using a skiplist and/or arena allocator provided by your malloc implementation. Roughly O(log(n)) vs O(1) in performance terms.

Don't get me wrong, the object header does eat a fair chunk of memory. Roughly double what another language will take. However, a lot of people confuse the memory which the JVM has claimed from the OS (and is thus reported by the OS) with the memory the JVM is actively using. 2 different things.

It just so happens that for moving collectors like the JVM typically uses more reserved memory means fewer garbage collections and time spend garbage collecting.

Re:Swift at Apple: Migrating the Password Monitoring Service... by sweetjuly on Tuesday June 03, 2025 @07:22PM (#44175829)
> Many other GCed languages, such as swift

Swift is not garbage collected, it uses reference counting. So, memory there is freed immediately when it is no longer in scope.

Re:Swift at Apple: Migrating the Password Monitoring Service... by vips7L on Tuesday June 03, 2025 @07:27PM (#44175851)
Reference counting is a form of garbage collection.
Re:Swift at Apple: Migrating the Password Monitoring Service... by pjmlp on Wednesday June 04, 2025 @03:17AM (#44178004)
People really should learn more about CS when discussing these matters.

Chapter 5, https://gchandbook.org/contents.html

Re:Swift at Apple: Migrating the Password Monitoring Service... by mrighele on Wednesday June 04, 2025 @02:24AM (#44177726)
A moving garbage collector is not that rare, other languages have it. I think C# has one for example, OCaml and SBCL too.

I know about the trade-offs that a moving GC does, but the rule is about double memory usage, not ten times more like a 90% reduction would seem to imply.

Re:Swift at Apple: Migrating the Password Monitoring Service... by formerly_proven on Tuesday June 03, 2025 @05:08PM (#44174759)
If Java's 128-bit object headers are already fairly fat, then what adjective applies to CPython's? [] is about a whole cache line. Trivial Python objects are barely smaller.
Re:Swift at Apple: Migrating the Password Monitoring Service... by loxs on Tuesday June 03, 2025 @02:14PM (#44172924)
The java runtime is a beast. Even the fact that another runtime is just capable to do a similar thing is impressive, disregard the fact that it might be better. Even being on par makes it interesting for me to maybe try it on my own.
Re:Swift at Apple: Migrating the Password Monitoring Service... by javanonymous on Tuesday June 03, 2025 @05:07PM (#44174745)
The JVM tends to use as much memory as it can for performance reasons. It is not a reliable indicator of how much memory it actually needs. Why spend resources on clearing memory if there's still unused memory left?

If memory is an issue, you can set a limit and the JVM will probably still work fine

Re:Swift at Apple: Migrating the Password Monitoring Service... by cellularmitosis on Tuesday June 03, 2025 @07:17PM (#44175801)
If it were such an easy problem to fix, don’t you think they would have done so rather than rewriting in Swift?
Re:Swift at Apple: Migrating the Password Monitoring Service... by cogman10 on Tuesday June 03, 2025 @07:29PM (#44175863)
Having been in development for a long time, no.

Frankly, it just takes some motivated senior devs and the tantalizing ability to put out the OP blog post and you've got something management will sign off on. Bonus points you get to talk about how amazing it was to use Apple tech to get the job done.

I don't think they seriously approached this because the article only mentioned tuning G1GC. The fact is, they should have been talking about ZGC, AppCDS, and probably Graal if pause times and startup times were really that big a problem for them. Heck, even CRaC should have been mentioned.

It is not hard to get a JVM to startup in sub second time. Here's one framework where that's literally the glossy print on the front page. [1]

[1] https://quarkus.io/

Re:Swift at Apple: Migrating the Password Monitoring Service... by jamesfinlayson on Tuesday June 03, 2025 @08:09PM (#44176076)
Yep, resume-driven development. I remember at a previous company a small group of people pushed a Go rewrite to speed everything up. The serious speed improvements came from re-architecting (elimination of a heavy custom framework, using a message queue instead of handling requests synchronously etc). They would have been better off fixing the original system so that everything could benefit from the improvements, not just the tiny bits that they carved off.

Then the next annual report talked about improved scalability because of this amazing technology from Google.

Re:Swift at Apple: Migrating the Password Monitoring Service... by geodel on Tuesday June 03, 2025 @10:18PM (#44176643)
Resume driven development would be using some random ass Java framework to pad on resume. Apple using Apple technologies seems rather like corporate mandate.
Re:Swift at Apple: Migrating the Password Monitoring Service... by geodel on Tuesday June 03, 2025 @10:16PM (#44176635)
If Apple does not dogfood their own technology for production systems what chance do they have to tell 3rd party users that Swift is ready for prime time.

Delving into Java arcana instead of getting first hand experience in developing in Swift would've been great opportunity wasted to improve Swift.

Re:Swift at Apple: Migrating the Password Monitoring Service... by cogman10 on Tuesday June 03, 2025 @10:22PM (#44176668)
I agree if this was a brand new system.

However, they chose to replace an existing system with swift. The "arcana" I mentioned is start up options easily found and safe to apply. It's about as magical as "-O2" is to C++.

Sure, this may have been the right choice if the reason was to exercise swift. However, that shouldn't pretend like there was nothing to do to make Java better. The steps I described are like 1 or 2 days worth of dev work. How much time do you think a rewrite took?

Re:Swift at Apple: Migrating the Password Monitoring Service... by MBCook on Tuesday June 03, 2025 @10:32PM (#44176705)
Apple has explicitly stating that they want to try and move as much of their stuff to Swift as possible.

I’m sure you’re right, there must’ve been ways to improve the job of deployment. But if they wanted to reduce resource usage and doing it in Swift aligned with some other company goal it would make sense they might just go straight to this.

Re:Swift at Apple: Migrating the Password Monitoring Service... by geodel on Tuesday June 03, 2025 @10:55PM (#44176812)
Once Amazon CEO was asked about new competitors trying to create cloud infrastructure fast. His reply was "You cannot compress experience"

Saving few weeks or months by learning 3rd party technology instead of applying and improving first party technology would be amateurish.

> However, that shouldn't pretend like there was nothing to do to make Java better.

This seems like constant refrain that Apple or anyone choosing their own tech over someone else's owe absolute fair shot to stuff they didn't choose. This is simply not the way world works.

Yes, there are endless stories companies spending enormous resources to optimize Java stack even up to working with Core Java team at Oracle to improve on JVM innards. But those companies are just (although heavy) user of core technology rather than developer of competing one. Apple is not one of those users, they are developers.

Re:Swift at Apple: Migrating the Password Monitoring Service... by pjmlp on Wednesday June 04, 2025 @03:14AM (#44177995)
I remember the days when Apple developed their own JVM, ported WebObjects from Objective-C to Java, and even had it as the main application language for a little while, uncertain if the Object Pascal/C++ educated developers on their ecosystem would ever bother to learn Objective-C when transitioning to OS X.
Re:Swift at Apple: Migrating the Password Monitoring Service... by cogman10 on Wednesday June 04, 2025 @05:00AM (#44178627)
> Yes, there are endless stories companies spending enormous resources to optimize Java stack

And not what I'm advocating for. Sometimes rewrites are necessary.

What I'm advocating is exercising a few well documented and fairly well known jvm flags that aren't particularly fiddly.

The jvm does have endless knobs, most of which you shouldn't touch and instead should let the heuristics do their work. These flags I'm mentioning are not that.

Swapping g1gc for zgc, for example, would have resolved one of their major complaints about GC impact under load. If the live set isn't near the max heap size then pause times are sub millisecond.

> This seems like constant refrain that Apple or anyone choosing their own tech over someone else's owe absolute fair shot to stuff they didn't choose. This is simply not the way world works.

The reason for this refrain is because Java is a very well known tech, easy to hire for (which Amazon that you cite heavily uses). And Apple had already adopted Java and wrote a product with it (I suspect they have several).

I would not be saying any of this if the article was a generic benchmark and comparison of Java with swift. I would not fault Apple for saying "we are rewriting in swift to minimize the number of languages used internally and improve the swift ecosystem".

I'm taking umbridge to them trying to sell this as an absolute necessity because of performance constraints while making questionable statements on the cause.

And, heck, the need to tweak some flags would be a valid thing to call out in the article "we got the performance we wanted with the default compiler options of Swift. To achieve the same thing with Java requires multiple changes from the default settings". I personally don't find it compelling, but it's honest and would sway someone that wants something that "just works" without fiddling.

Re:Swift at Apple: Migrating the Password Monitoring Service... by selcuka on Tuesday June 03, 2025 @09:10PM (#44176358)
Nothing at IBM is ever straightforward.

Decades ago, I was working with three IBM employees on a client project. During a discussion about a backup solution, one of them suggested that we migrate all customer data into DB2 on a daily basis and then back up the DB2 database.

I asked why we couldn't just back up the client's existing database directly, skipping the migration step. The response? "Because we commercially want to sell DB2."

Re:Swift at Apple: Migrating the Password Monitoring Service... by Someone on Wednesday June 04, 2025 @02:11AM (#44177678)
You tune for what you have/can get. Machines with less memory tend to have slower CPUs. That may make it impossible to tune for (close to) 100% CPU and memory usage.

And yes, Apple is huge and rich, so they can get fast machines with less memory, but they likely have other tasks with different requirements they want to run on the same hardware.

Re:Swift at Apple: Migrating the Password Monitoring Service... by tgma on Wednesday June 04, 2025 @02:24AM (#44177725)
No one gets promoted fixing bugs. Rewriting an entire system is a great way to achieve that.
Re:Swift at Apple: Migrating the Password Monitoring Service... by wiseowise on Wednesday June 04, 2025 @03:05AM (#44177927)
But then you don’t get promo and “fun” work!
Re:Swift at Apple: Migrating the Password Monitoring Service... by tgma on Wednesday June 04, 2025 @02:19AM (#44177708)
Your comment is definitely true. However, if you study GC performance academic papers over the past three for four decades, they pretty much conclude GC overhead, amortized, can be on par with manual alloc/free[1], but usually the unwritten assumption is they have unbounded memory for that to be true. If you study how much memory in practice you need not to suffer a performance loss on an amortized basis, you'd arrive at 2-3x, so I'd claim it is fair to assume Java needs 2-3x as much memory as Swift/C++/Rust to run comfortably.

You can actually witness this to some degree on Android vs iPhone. iPhone comfortably runs with 4GB RAM and Android would be slow as dog.

[1]: I don't dispute the results, but I also like to note that as a researcher in Computer Science in that domain, you were probably looking to prove how great GC is, not the opposite.

Re:Swift at Apple: Migrating the Password Monitoring Service... by wiseowise on Wednesday June 04, 2025 @03:04AM (#44177925)
Android doesn’t even run JVM.

> iPhone comfortably runs with 4GB RAM and Android would be slow as dog.

This has nothing to do with RAM. Without load, Android wouldn’t even push 2GB, it would be still slower than iPhone because of different trade-offs they make in architecture.

Re:Swift at Apple: Migrating the Password Monitoring Service... by tgma on Wednesday June 04, 2025 @03:09AM (#44177960)
The point was GC cost in general, not which Java/JVM implementation you choose. Try comparing two Androids with the same chipset at 4GB vs 8GB RAM.

Anyhow, that was just an anecdotal unscientific experiment to give you some idea--obviously they are two different codebases. The literature is there to quantify the matter as I noted.

Re:Swift at Apple: Migrating the Password Monitoring Service... by pjmlp on Wednesday June 04, 2025 @09:19AM (#44180450)
Android for a very long time lacked a quality JIT, AOT and GC implementation, and then each device is a snowflake of whatever changes each OEM has done to the device.

Unless one knows exactly what ART version is installed on the device, what build options from AOSP were used on the firmware image, and what is the mainline version deployed via PlayStore (if on Android 12 or later), there are zero conclusions that one can take out of it.

Also iOS applications tend to just die, when there is no more memory to make use of, due to lack of paging and memory fragmentation.