![]() |
1
2
我在这个设置上遇到了很多麻烦(Java在32位系统上——MSW和其他),它们都是通过在JVM中保留1GB的RAM来解决的。 否则,如前所述,系统中该进程实际占用的内存将超过2GB;此时,我正在对该进程进行“静默死亡”——没有错误,没有警告,只是进程非常安静地终止。 我在同一个系统上运行了几个JVM(每个JVM的内存低于1GB),获得了更高的稳定性和性能。 |
![]() |
2
1
我发现了一些关于 JNI memory management here 这是JVM JNI section on memory management . 3GB的用户空间超过2GB的用户空间应该会有所帮助,但是如果在2GB的交换空间用完时出现问题,我认为3GB只会使情况变得更糟。你的页面文件有多大?它是最大限度的吗? 通过将jconsole连接到JVM,可以更好地了解堆分配。 |
![]() |
3
0
Sun的JVM的垃圾收集器是MarkandSweep,有启用并发和增量GC的选项。 好吧,更准确地说,它是分阶段的,上面只适用于终身(长寿)的物体。对于年轻对象,GC仍然使用停止和复制收集器来完成,这对于使用短命对象(以及所有典型的Java程序创建许多短命对象)都要好得多。 复制收集器遍历堆中的所有元素,如果引用了这些元素,则将它们复制到新堆中,然后丢弃以前的堆。因此,1百万个活动对象需要高达2百万的实际内存:如果每个对象都是活动的,那么在垃圾收集过程中将有两个所有对象的副本。 因此,与在虚拟机中运行的代码相比,JVM需要的系统内存要多得多,因为管理和垃圾收集的开销很大。
这个
|
![]() |
4
0
不幸的是,你没有很好地解释你的问题。真正的问题是,为什么Java进程如此庞大。你有记忆泄漏吗?在JVM中有这么多数据的真正原因吗? C++库是从C堆栈中分配自己的内存,还是从Java对象空间分配内存,还是完全在做其他事情? |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |