Mar*_*ten 9 java memory jvm memory-footprint
我只是想知道当一个人开始产生JVM的多个进程时,JavaVM(Sun,Linux)的实际占用空间是什么.当我记得那些应该分享rt.jar(也许超越?).那些JVM是否共享JIT缓存(所有JVM功能都是相同的Classpath)?
有什么办法可以减少多实例JVM的开销吗?(除了设置较小的堆限制)?
编程应用程序时我能做些什么?
我可以共享内存区域吗?也许共享映射的内存块?
可能这只是部分答案。
JVM的内存占用量是多少
Java应用程序的全部资源由堆空间和非堆空间组成(我这样称呼它)。仅举几个非堆空间中的例子:PermGen或Metaspace,从代码(malloc)进行直接分配,NIO也使用本机内存。
我怎样才能将其最小化?
通常,堆占您足迹的最大一部分。所以,我将从它开始。
至于非堆空间,您可以最小化:PermGen(如果最大大小是多余的),线程栈(它们非常大,尤其是在64位JMM中)和代码缓存(当然是提高性能)。
那些JVM是否共享JIT缓存
在正常情况下(我不知道其他人),每个过程都有自己的足迹。这实际上是进程与线程的不同之处。回到多个JVM,每个JVM是一个单独的进程。
应该共享rt.jar
当然,如果您从同一目录(相同的安装)启动Java,它们将共享相同的rt.jar,但仅作为类的源。例如,String类的加载次数将与运行中的JVM的加载次数相同。
| 归档时间: |
|
| 查看次数: |
9715 次 |
| 最近记录: |