繁体   English   中英

如何控制JVM使用的内存?

[英]How do I keep memory used by JVM under control?

问题我在java中为我的raspberry-pi编写数据处理应用程序。 我正在使用postgresql,hibernate和tomcat。 我的应用程序是为最小的内存使用而设计的(由于raspberry-pi的限制),但java声称所有内存。 我如何指示JVM仅使用所需的内存。

算法要删除每个数据项,我需要执行以下步骤: - 从表中检索对象(引用对象) - 对于表中的每个对象: - 检索对象 - 如果test有效则与引用进行比较在第二个表中存储新对象 - 摧毁物体

默认情况下,JVM不会释放内存,而是逐步声明越来越多的内存。

问题我可以使用哪些JVM选项? 我可以使用哪些编程策略?

您可以使用-Xmx控制堆大小作为JVM选项。 进一步我猜想postgresql和hibernate是内存猪。 您可以尝试使用derby和empired-db或普通的旧JDBC,具体取决于应用程序的复杂程度。 我自己有一个运行在覆盆子pi上的tomcat 7来数字化一些传感器数据并提供图表。 使用ps它声称只有50 MB的RSS。

USER      PID    VSZ   RSS ST %CPU %MEM     TIME CMD
pi      19633 257988 50040 Sl  0.2 10.0 00:29:32 java -cp WEB-INF/classes:libs/tomcat-embed-core-7.0.37.jar:libs/tomcat-embed-logging-juli-7.0.37.jar:libs/raytion-commons-web.jar:libs/commons-exec-1.1.jar:libs/commons-cli-1.2.jar:libs/commons-lang-3.0.jar:libs/tomcat-embed-logging-log4j-7.0.37.jar:libs/log4j-1.2.16.jar:libs/joda-time-2.3.jar:libs/tomcat-embed-jasper-7.0.37.jar: -Ddatadir=../Heizungsdaten server.WebServer

请配置标志-Xmx与最大内存你想要允许jvm。

例如:

java -Xmx256m ...

只允许256兆的内存

如果您使用服务器,如tomcat,jboss,则在特定配置文件上定义-Xmx

“Java VisualVM可以允许开发人员生成和分析堆转储,跟踪内存泄漏,执行和监视垃圾收集,以及执行轻量级内存和CPU分析”。 那个工具很棒。 你试试看。 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM