我的java堆的分配速度约为123 MB。我需要这个少一点。我有1GB的限制,运行的两个程序都是服务器。其中一个以953 MB的速度运行。我试图运行的服务器JAR应该只占用10 MB或更少。我如何使ubuntu响应与我在JAR上测试过的其他操作系统相同?我的代码可以在GitHub找到。
Java版本: JDK/JRE-7
发布于 2013-12-10 18:05:30
当您通过top查看它时,使用*nix的开箱即用的Java看起来有点吓人。java可执行文件通常在VIRT列下显示巨大的数字,比如900m。为什么我的小型Java程序使用内存的900米?
实际上,它可能不需要使用90万内存。JVM告诉操作系统“我可能使用这么多内存.做好准备”。但它可能并没有实际使用那么多物理内存--如果它是一个小程序,它永远不会接近它。java没有实际使用的任何物理RAM仍可免费用于系统上的其他进程。
要想更准确地了解java进程正在使用多少物理内存,请看top的RES专栏。不过,关于*nix内存管理和剖析Java的全面讨论可能超出了这个答案的范围。我鼓励您尝试搜索这个主题,并根据您找到的材料开发特定的问题。
大多数情况下,使用Java的默认内存设置,Java程序(以及沿着它们运行的其他程序)都会做得很好。有时,您需要限制(或增加) JVM允许分配的最大堆内存量。这是最常用的调优Java内存设置,它通常使用-Xmx命令行参数来设置。您可以阅读更多关于它的这里和这里。
有时,如果您的Java程序是为您神奇地启动的,例如,作为一个系统服务,或者某个较大脚本的一部分,那么在哪里修改Java的命令行选项可能有点棘手。对Xmx进行谷歌搜索可能会让您开始使用修改该产品的java参数的传统方法。
例如Google搜索:https://www.google.com/search?q=ubuntu%20tomcat%20xmx
提供指向/etc/default/tomcat6方向的链接。
https://stackoverflow.com/questions/20475201
复制相似问题