Java erreur de Segmentation lors d'une tentative d'allouer de la mémoire tampon d'une taille supérieure à 256 MO

Je suis l'aide d'une JVM 64 bits (Oracle), lorsque je tente d'allouer de la mémoire tampon d'une taille supérieure à 256 MO, il se plaint et lance un "segmentation fault" erreur. Je l'ai et de l'attribution directe de la mémoire tampon à l'aide de java NIO, et le transfert et la réception de ces objets et à partir d'un RMI programme client sur la même machine (Linux 64 bits).

Une idée?

  • Pouvez-vous mettre un peu de code?
  • qu'est-ce que votre max tas de paramètre?
  • Une erreur de segmentation ne peut se produire si vous avez un bug dans un JNI à la bibliothèque ou dans la JVM. La première chose que je voudrais faire est de vous assurer d'avoir Java 6 update 25 ou la version la plus récente.
  • Je suis à l'aide de JDK 1.6 mise à jour du 25, (64-bit) de la JVM, et la taille maximale du tas est fixé à 8000MB, tandis que DireactMemorySize (-XX:MaxDirectMemorySize=3000M ) est mis à 3000MB. Je suis à l'aide du jog-amp JOCL (Java-OpenCL de liaison à la création de la taille des tampons à l'aide de mon Distribué (basé sur le RMI) cadre
  • qu'avez-vous mis -Xmx pour?
  • Est-il une limitation (taille maximale de l'objet) qui peut être envoyé en utilisant la sérialisation peut être l'objet plus grand que la taille de 256 MO à l'origine du problème? Une idée?
  • JVM produire un journal lorsqu'il crash. Pourriez-vous publier?
  • Je suppose (sans rien connaître de cette JVM) que, quelle que soit la correspondance de la mémoire système est utilisé à l'intérieur de la JVM impose une limite de 256 mo sur la taille d'un seul tenant de répartition.
  • Si vous êtes à l'aide de l'OpenJDK construire, puis essayez de Sun Java build. Sinon, ça sonne comme quelque chose qui doit être pris au HotSpot liste de diffusion.
  • avez-vous réussi à obtenir de vidage sur incident ou vous voyez la seg fault que dans syslog? Si vous n'avez pas le vidage sur incident, le plus probable, c'est un stackoverflow, ou juste en bas de la pile. Essayez d'augmenter le max de la pile, si vous avez profondément graphique traversals. Aussi le max de tas de paramètre n'a rien à voir avec direct à la mémoire.
  • Cela pourrait être lié à un rapport de bug, j'ai déposé: bugs.sun.com/bugdatabase/view_bug.do?bug_id=7027845
  • Vous ne pouvez pas transférer directement octet tampons via RMI. Ils ne sont pas sérialisables. Pas clair ce que vous demandez.

InformationsquelleAutor suleman | 2011-05-27