java cause code peut erreur de segmentation dans linux?

M. Pang:

On dit que java est plus sûr dans la manipulation de la mémoire de C. En C, il est très facile de provoquer une erreur de segmentation en accédant pointeur non valide. Maintenant, je voudrais savoir si le code Java peut également provoquer une erreur de segmentation. Quelqu'un peut-il me donner un exemple?

Niveau supérieur :

En règle générale dans le programme Java normale vous n'avez pas ce problème. Mais oui si vous utilisez chose comme sun.misc.Unsafevous pouvez provoquer une erreur de segmentation. Mais ce pourquoi Unsafeest appelé Unsafe. Normalement , vous ne devez pas utiliser si vous ne disposez pas de ces problèmes dans votre code.

Pour plus d' informations: Où est - sun.misc.Unsafe documenté?

Bug signalé avec l' erreur basé Segmentation avec sun.misc.Unsafe https://github.com/eclipse/openj9/issues/4153

Voici un exemple comment vous pouvez tester:

import java.lang.reflect.Field;

import sun.misc.Unsafe;

public class MainClass {

public static void main(String[] args)
        throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {

    Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
    theUnsafe.setAccessible(true);
    Unsafe unsafe = (Unsafe) theUnsafe.get(null);


     long ten = 10;
     byte size = 1;
     long mem = unsafe.allocateMemory(size);
     //Put here the wrong address!!!
     unsafe.putAddress(1, ten);
     //With this will work:
     //unsafe.putAddress(mem, ten);
     long readValue = unsafe.getAddress(mem);
     System.out.println("result: " + readValue);
}

}

Quand j'Executer sur Ubuntu 18.04, je reçois cette sortie: A fatal error has been detected by the Java Runtime Environment:

SIGSEGV (0xb) at pc=0x00007f05bdf04d27, pid=4145, tid=4147

JRE version: OpenJDK Runtime Environment (10.0.2+13) (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)

Sous Windows, je pense que ce sera une sortie similaire avec la description d'erreur fatale.

Bonne chance à tous!

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=201057&siteId=1
conseillé
Classement