8
Linux下Java的虚拟内存使用率,使用的内存过多
我在Linux下运行的Java应用程序有问题。 当使用默认的最大堆大小(64 MB)启动应用程序时,我看到使用tops应用程序为该应用程序分配了240 MB的虚拟内存。这会给计算机上的某些其他软件带来一些问题,这是相对有限的资源。 据我所知,保留的虚拟内存将不会被使用,因为一旦达到堆限制,OutOfMemoryError就会抛出。我在Windows下运行了相同的应用程序,并且看到虚拟内存大小和堆大小相似。 无论如何,我可以配置Linux下用于Java进程的虚拟内存吗? 编辑1:问题不是堆。问题是,例如,如果我将堆设置为128 MB,Linux仍然会分配210 MB的虚拟内存,这是永远不需要的。** 编辑2:使用ulimit -v允许限制虚拟内存量。如果设置的大小小于204 MB,则即使该应用程序不需要204 MB(仅64 MB)也不会运行。因此,我想了解为什么Java需要这么多虚拟内存。可以更改吗? 编辑3:系统中还运行着其他一些嵌入式应用程序。而且系统确实有虚拟内存限制(根据注释和重要细节)。