zoukankan      html  css  js  c++  java
  • Java虚拟机05.2(内存分配)

    jdk1.7中堆内存分为:年轻代+老年代+永久代。但是永久代有作为非堆内存存在,也就是说堆内存的大小应该为年轻代+老年代。在tomcat容器中,如果jsp页面过多可能出现永久代溢出。通常栈溢出都是程序递归等方面的错误编码原因。jdk1.8中永久代(方法区)已经移到元数据区了。


    • 堆内存分配
    • 永久代内存大小
    • 栈内存分配

    堆内存分配

    
    Xms800m Xmx800m Xmn300m  -XX:SurvivoRatio=8 -XX:NewRation=2 或  -XX:NewRation=3
    
    
    

    永久代(jdk1.7)

    
    -XX:PermSize=200m  -XX:MaxPermSize=400m
    
    
    

    栈内存分配

    -Xss128k #一般不会有人会设置这个,没有必要。
    
    

    推荐的:
    年轻代占堆内存的3/8左右,survivor占年轻代的1/10.

    所以-XX:SurvivorRation=8, 因为survivor占年轻代的1/10,所以survivor1:survivor2:Eden = 1:1:8.
    又因为-XX:SurvivorRation表示的是一个survivor与Eden的比值的倒数啊。所以是-XX:SurvivorRation=8。

    但是这个3/8没的整(不是整数,不好整),可以取1/4-1/2这俩个相邻的值:
    取1/4时候,年轻:老年为1:3,所以-XX:NewRatio=3
    取1/2时候,年轻:老年为1:2,所以-XX:NewRatio=2


    下面是大神进行内存溢出测试的方法,感兴趣的可以参考一下

  • 相关阅读:
    1026 Table Tennis (30)
    1029 Median
    1025 PAT Ranking (25)
    1017 Queueing at Bank (25)
    1014 Waiting in Line (30)
    1057 Stack (30)
    1010 Radix (25)
    1008 Elevator (20)
    字母大小写转换
    Nmap的基础知识
  • 原文地址:https://www.cnblogs.com/blbl9527/p/7631802.html
Copyright © 2011-2022 走看看