This is Not A Good Thing. This is people throwing every last feature -- even if it has a pile of 800kb of DLLs/SOs attached -- into every app, with no regard for memory.
I find my system thrashing almost daily at this point. I need to upgrade. Two years ago, running predominantly the same software, 4Gb was just barely not enough, and I upgraded to 8Gb. And two years before that, cut the memory requirements in half again. And again, and again, until you get back to the 1Mb of RAM I had in 1990.
There has been a trend to do exactly what you say you want for 30+ years. And you know, some of that extra memory has been used to great effect -- we can do a ton more now than we could in 1990. But a lot of it is wasted, just Because It's Easy.
And that wasted RAM means pointless upgrades every two years; 99% of the bloat at this point is for something I don't need or want. The ONLY valid reasons to need 16Gb+ are if you're actually using that much data in one place -- a server that needs to scale, for instance, or editing video, or maybe a game that uses crazy amounts of data and/or video.
That the same apps are bloating 2x every two years -- and as a result get slower, since hard drive and memory speeds certainly aren't doubling every two years -- is really unacceptable laziness on the parts of companies and developers in general. It's pretty much the opposite of a Good Thing.
We have come to understand that developer time is vastly more valuable than computing resources in the overwhelming majority of applications - the only real disagreement is how many orders of magnitude of inefficiency we consider tolerable. Even the most resource-constrained applications are using higher-level languages and computationally inefficient designs, because it's much easier to spec a faster chip than a smarter dev team.
Most applications aren't getting significantly slower. Web browsers are a perfect example of this; Almost every aspect of their performance has improved vastly over the past few years, but as a result we're building much more sophisticated web apps and doing things in the browser that were once purely the domain of highly optimised native apps. It's a near-perfect example of Jevons Paradox. Improving the efficiency of a process reduces the cost of the output, which leads to increased demand for the inputs to that process.
My current computer has 700,000x more RAM than my first computer. If 99% of that memory is wasted, I'm still doing pretty well.
>We have come to understand that developer time is vastly more valuable than computing resources
I get that, but still, 30 servers is pretty expensive. Having a full time engineer just to manage the cluster and write load balancing code is pretty expensive. Having down time because of a usage spike is pretty expensive. I'd rather pay for the smarter dev team myself, but I'm an engineer, so I'm biased.
Though fundamentally I wasn't talking about servers above. I was talking about desktops, and mostly Windows desktops. And having to install Python because that's what one developer prefers, and .NET because of another preference, and Perl because of a third, and Ruby because of a fourth, and Java because of a fifth...where does it end?
My own "scripting language" of choice is Lua. It's TINY, it's faster than all of the above (except, under some circumstances, Java -- but give Mike Pall another year or two and I bet LuaJIT will be beating Java in all the benchmarks instead of just many of them), and using it gives developers that productivity boost you're rightly saying is important.
And if you need more speed than Lua can give you, Go is a good option, if it comes to that. But as you point out, not every app needs every cycle.
[1] http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2...
Chrome, in particular, is generally be used for far more tabs (I have like 30 open right now on a MacBook Air) and increasingly complex web sites every year. It's easy to look at memory usage and complain, but the fact is that our usage and the size of the pages we're loading is also rising rapidly. If you loaded Chrome from two years ago and used it how you work today, you might not find the memory footprint that much better than the current version.
That's assuming you're using a computer with user upgradeable RAM, and not a new macbook pro.
But if you have to buy a whole new machine every two years when they only pieces of hardware that are getting better should be upgradeable (ram & display) it's pretty disheartening.
The ram upgrade procedure for the new MBPs is backup, Craigslist, Apple Store, restore.
[1] One can't easily buy a 64GB DIMM today, but Moore's Law is swift and mighty.
It objectively doesn't make your program run better to waste RAM.
If RAM usage goes up 2x every two years but RAM and hard drive speed go up 20% in the same time period, then using more RAM when you don't need it is making programs more sluggish to start and to suspend to disk, and it's making computers draw more power while sleeping (to keep that much RAM alive -- the D in DRAM means every bit in the RAM needs to be refreshed continuously).
From what I've read, an SSD has an expected life of about 1-2 years. Aside from not being able to afford $2500 JUST for an SSD to hold my data [1], I can't fathom paying that much every 1-2 years as the drives die. Not to mention downtime and potential lost data (between the back-up and the failure).
I'd love to have an SSD. In a year or two, I probably will, as the costs will likely drop.
But until then, yes, the performance has objectively dropped.
[1] http://www.amazon.com/OCZ-Technology-2-5-Inch-Performance-OC...
Quality is measured on multiple axes. RAM use is only one of them. CPU use is another, for example, and it's often the case that reducing CPU use requires increasing RAM use.
http://httparchive.org/trends.php?s=All&minlabel=Mar+15+...
And yes, that's pure raw bloat. Sites haven't gotten richer content the past 2 years, they've just put on some weight.
Sure I don't use it for modern gaming and sure I've delegated tasks to much stronger uni machines a few times in the past but other than the occasional hw problems due to age it still works and is mostly enough...
Shared Objects are not too bad, since they are shared between all processes that use (the same version of) them. In fact, the apparently worst case of linking them "into every app" is only slightly worse than having them appear in one app each. Assuming they are not all in the working set of every app at once, the overhead is small. Great OS technology!
I think the main technical problem with code/feature bloat is the increased likelihood of bugs with every additional line of code.
The problem is that one app wants the Mono/.NET runtime, another wants Python, another is using Java, another is using a huge pile of Visual Basic libraries...and then every app ECOSYSTEM has its own pile of dependencies and libraries. And on Windows, to avoid DLL-hell, everyone pretty much ships their own version of libraries to ensure compatibility (and if you're on Mac, the story is pretty much the same there -- apps don't share anything but OS services -- it's only on Linux where you can rebuild everything that people dare share versions, and even then another commenter just pointed out there are bugs with that too).
Java/Eclipse is probably my current worst offender, and Firefox is still greedy (though it's gotten better -- and Chrome is just completely broken on my system right now for whatever reason). Both are actually worse than the (bloated) Visual Studio that I need to run to develop Windows apps. And then of course there's Firefox (which has gotten better) and other various apps I'm running just to do basic development.
Eclipse makes Visual Studio look lean by comparison -- but if I want to develop for Android, I have to work a lot harder to get an alternate environment ALMOST working as well as they've got Eclipse configured to work.
Sounds like you're on Linux or Mac, and not doing as much GUI development as I choose to do. Looking right now Eclipse (the GUI from hell) alone is using 608Mb of memory. I know it has a lot of useful features, but 608Mb is a crazy amount of memory to use for a fancy text editor.
I'm also using Notepad++ with tons of plug-ins, and it takes up <10Mb. Eclipse does more, but really, does it do THAT much more?
And SKYPE is taking 90Mb to sit idle. I use Skype to chat with business clients, so I can't easily just toss it, despite that Pidgin is using 21Mb to connect to 4 different chat networks simultaneously and Skype only connects to one...
The list goes on. And I need to upgrade to 16Gb soon (though looking at the memory usage right now, shortly after a reboot, I'm "only" at 4.1Gb, so it's not critical yet). Sigh.
I used to carry around a laptop with 128MB RAM. In 2010-2012, I had 1GB and was happy with it, but I had to adapt:
- Try a tiling window manager. You'd be surprised how many resources it takes to draw those window decorations, which not only saves RAM but also helps you focus better.
- Try a lightweight browser like LuaKit, dwm, surf, etc. Most of them are Webkit-based anyway, so there's not many problems. Plus, a keyboard-driven web browser is a hoot
- Try using emacs/vim instead of Word or OpenOffice. Thanks to LaTeX, I haven't touched a huge office suite in ages.
- Instead of having lots of programs open in the background, why not try some command-line equivalents? If you're not on windows, you have access to a world of utilities: music players, todo lists, file managers, etc.
Now I'm on an 8GB machine, and even under heavy load, I don't think I've ever come close to reaching that limit in the six months I've owned this box. (I don't have any swap space either)
I've had a recent incident in which Chrome was consuming about 7GB of memory, just because I had about a hundred tabs open! It was really, really, insane. This reckless disregard for memory usage caused more problems in terms of performance, and it wasn't apparent what was happening until things started OOM'ing. (Swapping is really just as bad as an OOM - the computer's practically useless if it's trashing due to low memory.)
Your ideal situation of having more memory used will, in many cases, lead to degraded performance.
Granted, you could have multiple tasks ongoing in parallel, but are you really working in parallel at that point? If not, save the tabs and return to them later. I really doubt you are visiting all 100 tabs on a regular basis so as to merit they stay open at all times.
I've seen way too many people use their browser as a sort of todo app, by virtue of "I'll open a tab for this so I don't forget to do it later" -- hell, I do this too -- but that's not at all the intended usage of a browser, and so naturally, it sucks at it.
Also, if I need to click on a whole bunch of links that I know I'm immediately going to evaluate, it's faster and easier to click on 50 links in one go than to click, evaluate, close, find my old position, click, evaluate ...! I'm someone that likes to batch tasks because I find it more efficient.
Opening that many tabs isn't something I do every day. I've only got seven open right now, which is normal-ish, but sometimes I need it and I know I'll need it again soon.
(On a side note, I can't really figure out why but I hate the term smell but it triggers a visceral reaction and wish it'd die a horrible death!)
It is very possible to do a lot with less memory.
I do understand at times you want to open many more than that for a limited time, but those situations (at least in my experience) are typically very short-lived and don't represent my ordinary common usage pattern.
[and yes, smell is supposed to invoke that reaction! a code "smell", or process "smell", etc. is something that stinks, and it should disgust you, and you should work to clean up the 'smell' ASAP! :)]
... because if you do it only occasionally it uses less memory? :-/
> [and yes, smell is supposed to invoke that reaction! a code "smell", or process "smell", etc. is something that stinks, and it should disgust you, and you should work to clean up the 'smell' ASAP! :)]
Yes, Mother.
But not anymore. They change. There's tons of them. And organization sucks, though FF isn't as bad as Chrome and IE, but the general paradigm of shortcuts needs to be re-evaluated. I don't like web-based services (for many reasons), and I've yet to find a fitting extension that works for me.
So yeah, I can see how this usage pattern has arisen, but I think the answer is ultimately up to innovation that has sadly yet to occur.
Also interesting that Chrome never added an option to sync bookmarks to the Google Bookmarks web service.
I hope you didn't really try to say "there's nothing wrong with browsers' memory usage, as long as you don't stress them too much" ? :) :)
I'm sure there's no way you could effectively work that way, but imagining that what's true for you is true for everyone is a massive smell for ignorance of other workflow styles and cognitive abilities.
That is a lot of tabs, though.
Although once the favicons disappear, I usually open a new window, or group windows by subject matter. I've tried to alter my browsing habits over the years to ease the load on my computer, but I've just come to accept that I am just one of those people.
This tool is either the best thing that's ever happened, or it's about to exacerbate my problem 10 fold.
As someone else itt already said, a better solution would be some improved bookmarking system that I can use to just file away a tab, knowing that it'll be there when I need it, as well as offering the option of, I dunno popping up for review in a couple of days or a specific time maybe.
One thing I do not understand is why modern browsers, apart from bookmark-folders do not offer tags as well. They were a hugely successful way of ordering things back in the day and they have all but disappeared for some reason. And they would be tremendously useful in bookmarks (to me). And del.icio.us is dead, plus I don't want a web service to keep my bookmarks, it's too slow.
However, I don't really see why there needs to be a strict limit on the number of tabs you can have open before your browser starts trashing all your memory. This is a problem that can be solved by designing your software to deal with that use scenario, either by pausing unused pages and serializing the resources to disk or by disposing of the unused pages entirely without removing the tabs. You'd want a pref for this, but it seems entirely reasonable to me.
Maybe what we need is Chrome/FF to consider the very high tab count as a use case and handle it better, when you have so many tabs it's not easy to find the 1 in 100 that you're looking for, we would need a new find tool, possible the browser should build a client side tf/idf index and make the whole working set (workspace) searchable. You see what I mean? Until the browser changes to support this usecase, the usage will be klunky and fraught with problems.
It also features Panorama built-in, which lets you search through all the tabs. It's as simple as Ctrl+Shift+E, type your keyword.
If a hundred tabs is not really a lot, what would be? 250? 1,000?
It would be like me arguing that driving my car with the parking brake on makes it get hot, of course it does, it's user error.
There's no reason I should be fighting against my browser because my optimal workflow causes it to chew through memory!
My laptop's motherboard can't handle more than 8GB, so I don't even have the option of putting more RAM in it as it already has 8GB. Also, I shouldn't have to keep throwing in memory to handle applications whose coders feel it is fine and dandy to gobble memory with reckless abandon. Why should I bear the financial cost of a poorly designed application?
I'm most certainly using my tools properly whether you agree or not. I'm not bitching about 5,000 tabs causing excessive memory usage, I'm complaining about 100 which is not that many during research that requires going from page to page, or opening lots of links without having to remember where I was at in each part of my stack; I've got less working memory than my computer!
10 tabs yes, 100 tabs no!! Stop arguing, even your computer's telling you the same thing :) you're just bent belligerent snd acting like a spoiler child. You're browser can't do, so you maybe should find a different way. As I've suggested.
Maybe you don't need to have 100 tabs open. Maybe you lack imagination to see scenario where having that many tabs open.
It is also possible that you are aware of some great/better way to solve similar scenarios than me, but I guess you are keeping it a secret, since I regularly evaluate new plugins and extensions, and also search google for tips and tricks, how to do it better. (And to date haven't found a way)
Sure I could work with less tabs. Hell Everything could be done with only 1 tab in 1 window (and I used to in the 90s), but it's not as efficient as what I do now.
Edit: major spelling errors.
the ideal number of tabs roughly corresponds to the human stack size, plus a couple for on-going apps like gmail. If you need more than that, you should consider a better mechanism than the browser. Since you haven't found any, I posit that its you who lacks imagination. If you found my comment insulting then I am sorry.
You probably do still have a 32bit system so you're still capped at 4GB of useful memory. I'd still upgrade my system if I were you.
This is a fairly common problem: http://superuser.com/questions/308310/what-limits-a-motherbo...
2. The form factor may also impose a limit. You won't find a DDR stick larger than 1GB, for example.
Of course, if either of those were the cause of a 2GB limit, then you could make the case that the whole system should be upgraded, but that's a lot more expensive than a couple of sticks of RAM.
It's a bit silly, because RAM and storage seem to be the only things most people need more of on a daily basis. I suspect 5 year old CPUs would meet most people's needs just fine.
Unless you simply can't install more RAM without buying a whole new laptop. That's certainly the case for my laptop; its Intel i5 only can address 8GB max.
Memory is cheap, but buying a new laptop sadly isn't, especially when it's a decent development machine, and a step above standard consumer configurations.
http://superuser.com/questions/40113/does-installing-larger-...
And then everyone will continue to write code without regards to memory usage, and we'll be complaining that Chrome 45 locks up 19g per tab, and people with your mindset will say it doesn't matter because 1TB ram chips are cheap enough at $400 to just upgrade.
Just having loads of stuff using RAM takes more time to manage. I would not have imagined in 2013 with 16G of RAM and a > 2ghz multi core processor that I would still get system hangs and beach balls in my OS, but I do.
Depending on the complexity of the web pages, having 100 open tabs can easily cripple a brand new laptop with 8GB ram.
So ... it's not a technical problem.
Don't project your UI limitations onto other people please :)
Sure, but IMO it is the height of hubris to assume that your application's space-time-trade off to gain a few ms here or there is vastly more important that every OTHER application I am trying to run.
Play nice.
I agree it should not be an issue, but when the usual short-sighted budget issues are the primary problem, one has to use other tricks:
"You mean the 3 year old machine you work on for 12 hours a day is no longer good enough? Sorry, that does not fit the depreciation model. Also, we spent all the budget on new MacBook Airs for Sales, because they really needed new web browsers."
But then again the HN bubble also thinks my mother knows "Twitter Bootstrap" by name.
I could certainly benefit from reduced memory usage while still being able to go back to all those tabs. My overall system usage was 15 GB and with any more stuff I risk losing everything (since I'm not using a page-file).
This might be a very specific use-case, but I do see a lot of value in the extension. (Now, only if I could further hack my machine to use 32 GB :>)
It's somewhat ironic than opening Gmail in Google Chrome seems to consume roughly the same resources as Microsoft Outlook....
And even in the first world there are a lot of miserly corporations that penny pinch on things like RAM.
If software that wants to target either of those markets can be made more hardware efficient, it should be.
I was fortunate to get a new work PC recently which has 4GB of RAM. Getting it upgraded (even if I bought the memory myself) would likely take another three months of requests and I suspect would be limited to a maximum of 8GB anyway.
You are right that using RAM is preferable to using disk; however, nobody is talking about disks here.
Using a lot of RAM is bad because it makes you slow: pretty much everything, from paging to hash table lookups, works faster the lesser data there is to process.
Minimizing RAM usage is a very worthwhile goal if you want to be faster.
Sometimes people run other heavy programs alongside a browser: games, IDEs, etc. These tools also assume that RAM is cheap and use lots of it.
At that situation an extension like OneTab becomes very handy.
Since caches are up to 100 times faster, it does impact the reactivity of your program, in fact quite a lot.
Also, good luck figuring out how much is "as much RAM as possible without having to swap out".
this is the logic of someone willing to adapt to the environment around him. While the best solution would be more efficient programming, consumers are best served to max out their RAM and work with what they're given.
> this is the logic of someone willing to adapt to the environment around him.
How is this true? OP is saying devs should dump their app into memory and that devs need to adapt to OP's limitless RAM.
RAM is now fantastically cheap. 16GB of DDR3 costs less than $120 in either DIMM or SODIMM format, so there's little reason not to load out your machine with far more memory than you'd practically need.
I'd like software to use more memory, not less - for the vast majority of the time, most of my RAM is unused and my disk is idle, so why not use an aggressive strategy of pre-emptive caching?