JDK版本是热点8U_45
我研究了java进程的本地内存。本机内存甚至比堆占用更多的空间。然而,有许多本机内存块,这使我感到困惑。pmap-x的结果,例如:
00007f8128000000 65508 25204 25204 rw--- [ anon ]
00007f812bff9000 28 0 0 ----- [ anon ]
00007f812c000000 65508 24768 24768 rw--- [ anon ]
00007f812fff9000 28 0 0 ----- [ anon ]
00007f8130000000 65508 25532 25532 rw--- [ anon ]
00007f8133ff9000 28 0 0 ----- [ anon ]
00007f8134000000 65524 22764 22764 rw--- [ anon ]
00007f8137ffd000 12 0 0 ----- [ anon ]
00007f8138000000 65508 26456 26456 rw--- [ anon ]
00007f813bff9000 28 0 0 ----- [ anon ]
00007f813c000000 65508 23572 23572 rw--- [ anon ]
00007f813fff9000 28 0 0 ----- [ anon ]
00007f8140000000 65520 23208 23208 rw--- [ anon ]
00007f8143ffc000 16 0 0 ----- [ anon ]
00007f8144000000 65512 23164 23164 rw--- [ anon ]
00007f8147ffa000 24 0 0 ----- [ anon ]
00007f8148000000 65516 23416 23416 rw--- [ anon ]
00007f814bffb000 20 0 0 ----- [ anon ]
00007f814c000000 65508 23404 23404 rw--- [ anon ]
00007f814fff9000 28 0 0 ----- [ anon ]
00007f8150000000 65512 24620 24620 rw--- [ anon ]
00007f8153ffa000 24 0 0 ----- [ anon ]
00007f8154000000 65536 23976 23976 rw--- [ anon ]
00007f8158000000 65508 23652 23652 rw--- [ anon ]
00007f815bff9000 28 0 0 ----- [ anon ]
00007f815c000000 65508 23164 23164 rw--- [ anon ]
00007f815fff9000 28 0 0 ----- [ anon ]
00007f8160000000 65508 23344 23344 rw--- [ anon ]
00007f8163ff9000 28 0 0 ----- [ anon ]
00007f8164000000 65508 24052 24052 rw--- [ anon ]
00007f8167ff9000 28 0 0 ----- [ anon ]
00007f8168000000 131052 48608 48608 rw--- [ anon ]
00007f816fffb000 20 0 0 ----- [ anon ]
00007f8170000000 65516 23056 23056 rw--- [ anon ]
00007f8173ffb000 20 0 0 ----- [ anon ]
00007f8174000000 65516 26860 26860 rw--- [ anon ]
00007f8177ffb000 20 0 0 ----- [ anon ]
00007f8178000000 65508 23360 23360 rw--- [ anon ]
00007f817bff9000 28 0 0 ----- [ anon ]
00007f817c000000 65536 24856 24856 rw--- [ anon ]
00007f8180000000 65512 23272 23272 rw--- [ anon ]
00007f8183ffa000 24 0 0 ----- [ anon ]
00007f8184000000 65508 23688 23688 rw--- [ anon ]
00007f8187ff9000 28 0 0 ----- [ anon ]
00007f8188000000 65512 24024 24024 rw--- [ anon ]
00007f818bffa000 24 0 0 ----- [ anon ]
00007f818c000000 65508 25020 25020 rw--- [ anon ]
00007f818fff9000 28 0 0 ----- [ anon ]
00007f8190000000 65512 22868 22868 rw--- [ anon ]
00007f8193ffa000 24 0 0 ----- [ anon ]
00007f8194000000 65508 24156 24156 rw--- [ anon ]
00007f8197ff9000 28 0 0 ----- [ anon ]
00007f8198000000 65508 23684 23684 rw--- [ anon ]
有许多占地约64m的街区。
dump binary memory mem.bin from to
那么如何跟踪这些内存块的来源呢?
使用jemalloc
或tcmalloc
-它们都有内置的分配探查器,有助于识别分配的来源。
由于许多原因,Java进程可能会使用太多的本机内存。流行的原因是
unsafe.allocateMemory
ZipinputStream
)大家好,我有一个关于Java继承的具体问题。以下是我的代码 现在我的问题是,运行这个程序时,幕后到底发生了什么。 什么会遗传? 内存位置在哪里? 为什么第一个syso给4,第二个给5?(这一点我能在一定程度上理解,但澄清上述两个将有助于更清楚地理解它) 请引导
问题内容: 如果您运行的代码调用Java中的本机库,那么当内存分配应在对象的生存期内持续时,释放这些库分配的内存的常用方法是什么?在C ++中,我将使用析构函数,但是Java从来没有真正使用过析构函数,现在更少了。 我最感兴趣的特定情况是JOCL,其中有一个对象,该对象包装了已编译的OpenCL内核及其所有始终相同的参数。表示已编译内核和参数的结构都在库侧分配,JOCL提供了一种方法,您可以调用该
我刚刚尝试在Android 4.0设备上运行使用Java8编译的应用程序。虽然我习惯于非常小心地查看Android留档中的Android API级别,以确保我只使用Android 4.0上可用的API,但我不太习惯于确保我没有使用Android 4.0上不可用的Java功能。 考虑以下代码,它试图从视图类导入initializeScrollbars()API,因为无论出于何种原因,它已从官方SDK
问题内容: 在工作中,我们的目标平台之一是运行Linux的资源受限小型服务器(内核2.6.13,基于旧的Fedora Core的自定义发行版)。该应用程序是用Java(Sun JDK 1.6_04)编写的。Linux OOM杀手配置为在内存使用量超过160MB时杀死进程。即使在高负载下,我们的应用程序也永远不会超过120MB,并且与其他活动的本机进程一起,我们也始终保持在OOM限制内。 但是,事实
问题内容: 有什么工具可以知道我的Java应用程序已使用了多少个本机内存?我的应用程序内存不足:当前设置是:-Xmx900m 计算机,Windows 2003 Server 32位,RAM 4GB。 还在Windows上将boot.ini更改为/ 3GB,会有什么不同吗?如果设置为Xmx900m,则可以为此进程分配多少最大本机内存?是1100m吗? 问题答案: (就我而言,我使用的是Java 8)
我有一个一直在思考的问题。以这个特殊的类为例 假设我有一个B类,它拥有一个使用listOne读取详细信息的方法。要查看数组列表,我需要首先获取列表的大小,以便我的代码知道数组列表何时结束。有两种方法可以做到这一点,一种是 或者我也可以用 在内存和效率方面,哪种方法更好?此外,假设我正在递归地读取一个非常大的数组。为了简单起见,让我们假设递归读取此数组将导致堆栈溢出异常。在这种情况下,第一个方法在理