由java进行内存分配 [英] Memory allocation by java

查看:170
本文介绍了由java进行内存分配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:
我已经设置Xms512m和Xmx1024m运行应用程序intern使用C ++本机层执行其他操作,我在运行应用程序时得到OutOfMemory异常。我需要知道C + +使用哪些内存(即从分配的内存Xms512m和Xmx1024m或它使用非此设置的内存)。

Problem : I have setted Xms512m and Xmx1024m for running application which intern use C++ native layer for performing other operation, I am getting OutOfMemory exception when running application. I need to know C++ uses which memory (ie from assigned memory Xms512m and Xmx1024m or it uses other than this setted memory).

如何获得堆空间和堆栈空间分别运行应用程序时的Java和C ++代码。

How to get heap space and stack space for Java and C++ code while running application separately.

推荐答案

由本机代码分配的内存不在Java堆中。您的OutOfMemory异常是由java应用程序引起的。 OOM是一个线索,让你一个迹象,java应用程序可能使用超过1024mb内存。你可以使它更大或考虑内存泄漏问题。

The memory allocated by native code is not in the Java Heap. Your OutOfMemory Exception caused by the java application. OOM is a clue to get you a sign that java app may use more than 1024mb memory. You can make it larger or consider the memory leak problem.

有一些关于内存泄漏检测的链接:

There are some links about memory leak detection:

  • Eclipse Memory Analyser (MAT) - Tutorial
  • 10 points about Java Heap Space or Java Heap Memory

您可以:


  • 通过jps获取java应用pid


qty:~ qrtt1$ jps
4437 start.jar
10470 Jps





  • 通过jmap获取堆转储数据


  • jmap -dump:format=b,file=my_app_heap_data.hprof 4437
    





    • 使用mat打开它,如下所示:

    • 这篇关于由java进行内存分配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆