Tag:

Jmap无法连接进行转储

我们有一个应用程序的公开testing版,偶尔会导致heappace溢出。 JVM通过永久休假来作出反应。 为了分析这个,我想在失败的地方偷看一下记忆。 Java不希望我这样做。 这个过程仍然在内存中,但它似乎并没有被认为是一个Java过程。 有问题的服务器是Debian Lenny服务器,Java 6u14 /opt/jdk/bin# ./jmap -F -dump:format=b,file=/tmp/apidump.hprof 11175 Attaching to process ID 11175, please wait… sun.jvm.hotspot.debugger.NoSuchSymbolException: Could not find symbol "gHotSpotVMTypeEntryTypeNameOffset" in any of the known library names (libjvm.so, libjvm_g.so, gamma_g) at sun.jvm.hotspot.HotSpotTypeDataBase.lookupInProcess(HotSpotTypeDataBase.java:390) at sun.jvm.hotspot.HotSpotTypeDataBase.getLongValueFromProcess(HotSpotTypeDataBase.java:371) at sun.jvm.hotspot.HotSpotTypeDataBase.readVMTypes(HotSpotTypeDataBase.java:102) at sun.jvm.hotspot.HotSpotTypeDataBase.<init>(HotSpotTypeDataBase.java:85) at sun.jvm.hotspot.bugspot.BugSpotAgent.setupVM(BugSpotAgent.java:568) at sun.jvm.hotspot.bugspot.BugSpotAgent.go(BugSpotAgent.java:494) at sun.jvm.hotspot.bugspot.BugSpotAgent.attach(BugSpotAgent.java:332) at sun.jvm.hotspot.tools.Tool.start(Tool.java:163) at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:77) at […]

堆地址和致命信号无效11

每隔一段时间,我的应用程序将崩溃,我的日志将被读取: @@@ ABORTING: INVALID HEAP ADDRESS IN dlfree Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1) 有时code=2 ,但总是Fatal signal 11和invalid heap address 。 我试图研究这是什么意思,以及如何解决这个问题。 这个线程是最有帮助的 ; 但是,我仍然没有解决scheme。 当我运行几个AsyncTasks来下载几个图像时,会发生错误。 这是我的主要AsyncTask public class FetchArtistImages extends AsyncTask<Void, Integer, String[]> implements Constants { private final WeakReference<Context> contextReference; public FetchArtistImages(Context context) { contextReference = new WeakReference<Context>(context); } @Override protected String[] doInBackground(Void… […]

当堆栈和堆相互碰撞时会发生什么

我很想知道堆栈和堆相冲突时会发生什么。 如果有人遇到这种情况,请他们解释一下情况。 提前致谢。

在C ++中使用std :: allocator而不是new的优点是什么?

我刚读了std::allocator 。 在我看来,使用它而不是使用new和delete会更复杂。 使用allocator我们必须显式地分配堆内存,构造它,销毁它,然后释放内存。 那么为什么创build? 在哪些情况下可以使用,什么时候使用,而不是新的和删除?

在C中,堆栈和堆创build“类”?

每当我看到一个C“类”(任何结构的意图是通过访问函数,将指针作为第一个参数使用),我看到他们这样实现: typedef struct { int member_a; float member_b; } CClass; CClass* CClass_create(); void CClass_destroy(CClass *self); void CClass_someFunction(CClass *self, …); … 在这种情况下, CClass_create总是malloc它的内存并返回一个指针。 每当我看到new C ++不必要的时候,它通常会使C ++程序员疯狂,但这种做法在C中似乎是可以接受的。 为什么堆分配结构“类”是如此普遍背后有什么理由?

如何增加Eclipse中的应用程序堆大小?

有人说我需要在我的应用程序的运行configuration中这样做。 当我打开那个窗口时,你能告诉我如何设置正确的参数和内存量吗? 说如何设置2GB或1.5GB?

如何通过环境variables设置Java的最小和最大堆大小?

如何通过环境variables设置Java的最小和最大堆大小? 我知道启动java时可以设置堆大小,但我希望通过我的服务器上的环境variables来调整。

如何在线性时间内使用堆find数字的中位数?

维基百科说: selectalgorithm:find最小值,最大值,最小值和最大值, 中值 ,甚至第k个最大元素都可以使用堆在线性时间内完成。 它所说的是,它可以做到,而不是如何。 你可以给我一些开始如何使用堆可以做到这一点?

Java拒绝开始 – 无法为对象堆预留足够的空间

背景 我们有一个大约20个Linux刀片的池。 一些运行Suse,一些运行Redhat。 共享NAS空间,其中包含以下3个文件夹: / NAS / app / java – 指向安装Java JDK的符号链接。 目前版本1.5.0_10 / NAS / app / lib – 一个指向我们应用程序版本的符号链接。 / NAS / data – 我们的输出被写入的目录 我们所有的机器都有2个处理器(超线程),4GB的物理内存和4GB的交换空间。 我们将每台机器可以在给定时间处理的“工作”数量限制为6个(这个数字可能需要改变,但是这并不会成为当前的问题,所以请暂时忽略它)。 我们的一些工作设置了最大堆大小为512mb,其他一些预留最大堆大小为2048mb。 再一次,我们意识到如果6个作业在堆大小设置为2048的同一台机器上启动,我们可以检查可用内存,但据我们所知,这还没有发生。 问题 有一次,一个作业将立即失败并显示以下消息: Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. […]

Max-Heapify最糟糕的情况 – 你如何得到2n / 3?

在CLRS,第三版,第155页中给出了在MAX-HEAPIFY中, 每个子树的最大尺寸至多为2n / 3 ,最差的情况发生在树的底部正好满一半的时候。 我明白为什么最差的时候,树的底部正好是半满的。 在这个问题中也回答了MAX-HEAPIFY中的最坏情况:“最坏的情况发生在树的底部正好是半满的时候” 我的问题是如何获得2n / 3? 为什么如果最低水平是一半,那么子树的大小是2n / 3? 如何计算? 谢谢