Maison  >  Questions et réponses  >  le corps du texte

java - 今天开始用eclipse编写servlet程序,但是经常写着写着就变的很卡,最后强行关闭,又重启还是不行,为什么呢?

有时候会自己卡在那,有时候eclipse提示出现问题,要求我查看workspace.metadata.log文件,log文件提示的错误是:
!ENTRY org.eclipse.osgi 4 0 2016-11-05 15:17:10.371
!MESSAGE Error stopping the framework.
!STACK 0
java.lang.OutOfMemoryError: PermGen space


我在百度上查的java.lang.OutOfMemoryError解决方案是在tomcat配置里扩大内存,如图,红色部分是根据提示添加的:

还有的说在eclipse里修改Window/Perferences/General里的Startup and Shutdown,把打勾的都去掉。

我试了两种方法都不行,再次打开eclipse编程过一会还是会边卡,求大神指教,这是为什么啊?

迷茫迷茫2764 Il y a quelques jours973

répondre à tous(4)je répondrai

  • 天蓬老师

    天蓬老师2017-04-18 10:21:04

    1 Comme indiqué ci-dessous, vous pouvez trouver ecplise.ini sous le chemin d'installation d'ecplise, sélectionner un éditeur de texte pour l'ouvrir, afficher les paramètres de ces paramètres dans la boîte et les définir en fonction de votre propre mémoire


    Deuxièmement, vous pouvez également récupérer la mémoire virtuelle du jdk que vous utilisez dans ecplise
    Fenêtre de recherche->préférences->Java->Installé dans eclispe JRE, cliquez sur le bouton Modifier à droite et remplissez les valeurs suivantes dans l'option "Arguments par défaut de la VM" dans l'interface d'édition.
    -Xms64m -Xmx128m

    Modifier les configurations d'exécution

    Cliquez avec le bouton droit sur le code, cliquez sur "Exécuter en tant que" -> "Exécuter les configurations" et renseignez les valeurs suivantes dans "Arguments VM :" dans le paramètre Arguments.
    -Xms64m -Xmx128m

    Enfin, ces valeurs de paramètres ne sont pas à remplir simplement. Il est préférable de définir des valeurs raisonnables en fonction de la mémoire de votre propre machine

    Ce qui suit est la description officielle
    Mémoire tas et non tas
    Selon la déclaration officielle : "La machine virtuelle Java a un tas. Le tas est la zone de données d'exécution, toutes les instances de classe et la mémoire du tableau est alloué à partir d'ici. Le tas est créé au démarrage de la machine virtuelle Java. "La mémoire en dehors du tas dans la JVM est appelée mémoire non tas." On constate que la JVM gère principalement deux types de mémoire : tas et non tas. En termes simples, le tas est la mémoire accessible au code Java et est réservée aux développeurs ; le non-heap est la mémoire réservée à la JVM pour son propre usage, donc la mémoire requise pour la zone de méthode et le traitement ou l'optimisation interne de la JVM (comme cache de code compilé JIT), chaque structure de classe (telle que le pool de constantes d'exécution, les données de champ et de méthode) et le code des méthodes et des constructeurs sont tous dans la mémoire hors tas.
    Allocation de mémoire du tas
    La mémoire initiale allouée par la JVM est spécifiée par -Xms, et la valeur par défaut est 1/64 de la mémoire physique ; la mémoire maximale allouée par la JVM est spécifiée par -Xmx, et la valeur par défaut est représente 1/4 de la mémoire physique. Par défaut, lorsque la mémoire du tas libre est inférieure à 40 %, la JVM augmentera le tas jusqu'à la limite maximale de -Xmx ; lorsque la mémoire du tas libre est supérieure à 70 %, la JVM réduira le tas jusqu'à la limite minimale de -Xms. Par conséquent, le serveur définit généralement -Xms et -Xmx comme étant égaux pour éviter d'ajuster la taille du tas après chaque GC.
    Allocation de mémoire non tas
    JVM utilise -XX:PermSize pour définir la valeur initiale de la mémoire non tas, la valeur par défaut est 1/64 de la mémoire physique XX:MaxPermSize définit la taille maximale de la mémoire non tas ; , la valeur par défaut est 1/64 de la mémoire physique /4.
    Limite de mémoire JVM (valeur maximale)
    Tout d'abord, la mémoire JVM est limitée à la mémoire physique maximale réelle (un non-sens ! Haha en supposant que la mémoire physique est infinie, la valeur maximale de la mémoire JVM en a beaucoup). à voir avec le système d'exploitation. Pour faire simple, bien que l'espace mémoire contrôlable d'un processeur 32 bits soit de 4 Go, le système d'exploitation spécifique fixera une limite. Cette limite est généralement de 2 Go à 3 Go (en général, elle est de 1,5G-2G sous les systèmes Windows et de 1,5). G-2G sous les systèmes Linux). 2G-3G), et il n'y aura aucune restriction sur les processeurs supérieurs à 64 bits.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:21:04

    • Augmenter la mémoire/changer de SSD

    • Changer d'ordinateur

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:21:04

    Essayez d'ajouter ces configurations à la configuration JDK de Tomcat. La capture d'écran ne peut pas être téléchargée. Elle se trouve dans les arguments facultatifs de la machine virtuelle Java dans le serveur>tomcat>JDK

    .

    répondre
    0
  • 阿神

    阿神2017-04-18 10:21:04

    Facile, passez à l'idée (mais la configuration est meilleure)

    répondre
    0
  • Annulerrépondre