One thing I've been vaguely interested in over the last year or so (enough to pique my curiosity on occasion, but too busy to do anything serious about it) has been the nuts and bolts of memory management, and how it affects virtual machine-based OO apps of the kind I've been writing for the last five years.
Our operating systems are the result of decades of research into memory management, which is then totally ignored by the virtual machine. The virtual machine carves out a gigantic chunk of memory and manages it all itself, because the virtual machine's requirements for memory management are completely at odds with the assumptions of the OS. Which is why you have to fiddle around annoyingly with every Java application's memory allocation like it's some kind of 1990's-era Mac app; and why crippling the operating system's memory manager can sometimes make your Java appserver run faster.
Given the prevailing popularity of VM-based object-oriented systems these days, especially ones with huge memory requirements running on big servers, I sometimes wonder why there isn't more research like this going on: Sun research: An object-aware memory architecture.
I'm looking for more like the above. If you find any, post it in the comments and I'll be a happy fish.
Addendum: When I posted this article, something was bothering me. So I went into the office and re-read it, and thought "Ah. Does VM mean virtual machine or virtual memory?" Overlapping acronyms should be banned.
What's this nonsense about virtual machines and memory?
Everyone knows that 'vm' stands for 'view mail'.
http://www.wonderworks.com/vm/
I suggest you read some of the dozens of Lisp machine virtual memory papers that came out in the 1980s. The Lisp machine had a virtual memory architecture, and a lot of thought and testing went into designing the memory management scheme. The idea of the ephemeral garbage collector, generalized to manage "generations" of garbage was designed to both minimize the cost of garbage collection and to improve the locality of Lisp programs.
According to Paul Graham, you have run into:
"Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp."
When Lisp first came out, the machines were small and the programs were large. Then, the machines got bigger and the programs fit much better. There was little reason to design better garbage collectors, object oriented memory allocation schemes and the like. Now, it looks like the programs are getting big again, and it's time to dredge up the history books.
please,what is virtual memory management and please help me give the type of memory management use in small computers.
Dear anonymous commenter.
Do your own homework.
Have a nice day,
Charles.
How does scripting languages like Perl and Python solve this?
Is it due to Java grabbing a large part of it's allocated heap in one large piece?