Java Segmentation fault " beim Versuch, allocate buffer-Größen, die größer als 256 MB

Ich bin mit einem 64-bit-JVM (von Oracle), wenn ich versuche zu reservieren, Puffer-Größen, die größer als 256 MB beschwert es sich und löst einen "segmentation fault" - Fehler. Ich und Zuweisung direct memory-Puffer mit java NIO, und die übertragung und den Empfang dieser Objekte zu und von einem RMI-client-Programm auf demselben Computer (Linux 64 bit).

Irgendeine Idee?

  • Kannst du ein bisschen code?
  • was ist dein max-heap-Einstellung?
  • Ein "segmentation fault" kann nur auftreten, wenn Sie einen Fehler in der JNI-Bibliothek oder in der JVM. Das erste, was ich versuchen würde, ist sicherzustellen, dass Sie haben Java 6 update 25 oder die neueste version.
  • Ich bin mit dem JDK 1.6 update 25, (64-bit) - JVM, und die maximale heap-Größe auf 8000MB, während DireactMemorySize (-XX:MaxDirectMemorySize=3000M ) auf 3000MB. Ich bin mit jog-amp JOCL (Java-OpenCL-Bindung zum erstellen der erforderlichen Größe-Puffer mit meiner Verteilt (basierend auf RMI) Rahmen
  • was haben Sie -Xmx zu?
  • Gibt es eine Begrenzung (maximale Größe des Objekts), die gesendet werden können mit Hilfe der Serialisierung kann sein Objekt größer als die Größe von 256 MB das problem verursacht? IRGENDEINE Idee?
  • JVM erzeugen ein Protokoll, wenn es abstürzt. Könntest du es posten?
  • Ich würde vermuten (ohne zu wissen, etwas über diese spezielle JVM), was Speicher-mapping-Schema verwendet, im inneren der JVM legt eine 256-MB-limit auf die Größe einer einzigen zusammenhängenden Zuweisung.
  • Wenn Sie die OpenJDK-build, dann versuchen Sie die Sun Java bauen. Sonst klingt es wie etwas, die ergriffen werden sollten, um die HotSpot-mailing-Liste.
  • hast du es geschafft, crash dump, oder Sie sehen die seg Fehler nur im syslog? Wenn Sie nicht über die crash-dump, die meisten wahrscheinlich, es ist ein stackoverflow, oder einfach nur low stack. Erhöhen Sie die max-stack, wenn Sie tief graph-traversals. Auch die max-heap-Einstellung hat nichts zu tun w/ die direkte Erinnerung.
  • Dies könnte im Zusammenhang mit einem bug-Bericht, den ich eingereicht: bugs.sun.com/bugdatabase/view_bug.do?bug_id=7027845
  • Sie kann nicht übertragen werden die direkte byte-Puffer über RMI. Sie sind nicht serialisierbar. Unklar ist, was Sie gefragt haben.

InformationsquelleAutor suleman | 2011-05-27
Schreibe einen Kommentar