Hacker News new | ask | show | jobs
by NikolaeVarius 3032 days ago
I use this personally. Its great. Hides all the cruft that people post in slack as text. I've been working on trying to extend it on the side.

A chat client should not be taking over 1GB of RAM

6 comments

Current software stacks are incredibly bloated. I recently wrote a simple Java web server. I took care no to use unnecessary memory, I didn't use a single library for it, yet it can't do even basic functions without OOM unless I'm giving it 16MB RAM for heap (and it eats even more for other things). So almost 20 MB RAM for hello world. And that's for relatively efficient VM. I guess, similar web server written with C would use around 20 KB RAM (and most of it for I/O buffers).
That's such an unfair comparison, though (and really, with 8+ GB of RAM being the norm, 20 MB is still pretty svelte). Java has an entire virtual machine and runtime, whereas a C program is just a binary that gets loaded straight into memory.
Java theoretically taking a lot of care not to use excessive memory. It loads classes on demand, it compiles bytecode only when this path is really hot. I don't really see why it's necessary to use 16MB RAM. Golang has GC and doesn't that much memory. Lua has an entire virtual machine and runtime and doesn't use that much memory either. It's not a valid argument. I still believe that current JVM developers just don't care that much about memory consumption which is a valid decision, but I don't like it anyway. Not everyone has 8+GB of RAM. I have 256 MB VPS which runs quite a few of network services and has half of memory free, but I don't think that I could afford Java if I want to run something there, even if my load is tiny.
functionally and computationally, the tiny C program and the java monster would be doing the same thing....

So yes, they're comparable. Choosing inefficient ways to do things (in the case of Java) is not a way to escape comparison.

You can't say "wow, look how much smaller the C program is" and then ignore why it's so much smaller in the first place (no runtime, no garbage collection, etc.) If that's the case, then we should hand-roll assembly all the time because it's "smaller". You also can't just call Java inefficient because it produces larger programs or is "slower". It's all about choosing the right tool for the job.
Perhaps Java should have been designed to scale down and not require all that stuff when perfectly reasonable applications don't need them all the time.
Then those "perfectly reasonable" applications are free to eschew languages like Java. People do it all the time to great success. People also use Java to great success. But that's neither here nor there. My point is that it's unfair to call Java programs bloated when the extra space is necessary to support the runtime environment that makes Java Java. I'm not arguing the merits of such a thing (indeed, swap Java with literally any other language), I just want it to be clear that C and Java programs run differently, and both languages/runtimes, such as they are, were developed at different times and to serve different purposes, and therefore it's not correct to bemoan that Java programs are larger. That's like complaining that JavaScript doesn't give you direct memory access or that assembly doesn't have classes.
I was gonna say there's no way slack uses that much, then I actually looked. 750+mb.... What in the world are they doing?
It's based on Electron[1] which has a reputation for being a bit of a resource hog. The upside is that it makes it really easy to create a cross-platform app.

[1] https://electronjs.org/

I use quite a few electron apps and none of them seem to get that bad except maybe atom but I have a TON of open windows.
Slack gets pretty resource-intensive when the user is part of multiple workspaces. I know one of my co-workers is part of three or four, whereas I'm only part of the main company workspace. Co-worker's Slack memory usage is around triple that of my own.
> What in the world are they doing?

Literally no one knows! It's layers upon layers of code. Most of the layers can't even be understood by a single person, let alone the whole program.

What's the advantages of using the client vs. using it as a tab in your browser? Tab in the browser seems to be working for me OK, once I figured out I could "pin" the tab in Firefox, which prevented me from accidentally closing it.
I work with three to four Adobe programs open for my workflow, even the browser version has a noticeable effect on performance. I actually run it on a $60 Amazon tablet next to my monitor (only because our organization insists on slack)
> 1GB of RAM

You meant 1MB, right? ;-)

It shouldn't take more than 1MB, but a "power user" with the stock Slack desktop client will probably see RAM usage of 1.5 GB[1]. So* GP was referencing the fact that currently the Slack desktop client is using >1GB and that is way too much.

* I recognize your sarcasm, but figured I'd reply anyway since the internet is a weird place and lots of people might not catch the joke.

[1] https://medium.com/@matt.at.ably/wheres-all-my-cpu-and-memor...

how is it taking up that much data? I'm at 550mbs with 6 very active teams and while on voice chat. Dropped out of voice chat I'm at 340mb. Each team has 10-20 channels.

I also use Discord which uses Electron and with it, I'm on 8 separate active servers with anywhere from 10-30 channels. This sits at 115mb without an issue.

Can you tell me where these electron metrics come from where people have slack take up 1gb or even 2gb of memory?

Every Slack workspace creates an Electron instance. If you're on three workspaces, that's like running three totally separate browsers.
More information about how Slack uses electron's Webview and BrowserView: https://slack.engineering/growing-pains-migrating-slacks-des...
What the hell?
That's not entirely right. Each workspace is an equivalent of a tab, not a browser.
> I'm at 550mbs with 6 very active teams and while on voice chat. Dropped out of voice chat I'm at 340mb

That's still a lot of RAM for a chat with giant emojis.

You have to consider that people reporting these issues with memory consumption are running the app in different operating system than yours. Maybe your system is optimized. I just checked my co-workers computer and his main Slack process is at +97MB but there are 3 instances of "Slack Helper" at +433MB, +297MB and +255MB respectively. That's over 1GB in total. So either you are just looking at the main Slack process (which at +340MB makes sense) or your Slack is leaking memory somewhere that your RAM monitor is not able to map.

I checked. I'm at 360mb for 8 separate Slack processes grouped together. I'm on Windows 10, not sure if that matters.

There are no Slack helpers.

I'm not sure why you're this adamant about it.

I still it's quite a good deal given that my Discord instance has a similar feature-set and is accessing just as many channels/servers/teams as Slack but at a third of the memory.

Back when I used Slack, I was on 8? different slack(s)? And my memory usage was around 1.5-2GB on OSX.
Sure! I remember those days. I'm on Windows 10 and over the past year, they've tremendously improved on memory usage.
> A chat client should not be taking over 1GB of RAM

Why do you care so much about RAM usage? All this concern over RAM is completely missing the picture here.

Every conversation about slack or electron people complain about RAM usage. The market could not give two shits about RAM usage so why does everyone on HN complain about it?

Probably because their $3000 desktops are grinding to a crawl under these unwieldy stacks of cruft. The market might not care but that's only because most users are too naive to realize that spending hundreds to thousands of dollars a year upgrading their phones and laptops is neither necessary nor desirable. Eventually consumers in this space will gain more awareness and these wasteful software development practices will have to end.
1GB of RAM is anywhere from 25-50% of the RAM available on the average new (let alone used) consumer-grade laptop. For a chat app. And that's not even factoring in the OS overhead.

That's fucking bonkers. Objectively and scientifically fucking bonkers.

Because when you combine that with the silly MS overhead from useless processes because the team that controls your Win 10 environment insists on running Group Policy without a care.. then you notice that your machine is suddenly bogged down, when it's been running fine for the years you had total control of it! !!
Because a large percentage of HN commenters are programmers? Wasteful is wasteful
My computer is like a garden - treat it with respect or we can’t be friends.