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


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

Java虚拟机05.2(内存分配)的更多相关文章

  1. 《深入理解 java 虚拟机》学习 -- 内存分配

    <深入理解 java 虚拟机>学习 -- 内存分配 1. Minor GC 和 Full GC 区别 概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java ...

  2. Java虚拟机7:内存分配原则

    前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数 ...

  3. Java虚拟机创建对象的内存分配以及对象的内存布局

    本博文知识参考周志明<深入理解Java虚拟机> Java虚拟机在创建对象使如果进行内存分配: 1.指针碰撞 2.空闲列表 Java在多线程情况下创建对象的内存分配: Java完成对象内存分 ...

  4. Java虚拟机11:内存分配原则

    前言 JVM的自动内存管理要自动化的解决两个问题:对象分配内存以及回收分配给对象的内存.对象的内存分配一般是指在堆上分配,少数情况下也可能会直接分配在老年代上,对象主要分配在新生代的Eden 区上,如 ...

  5. 转!!Java虚拟机堆的内存分配和回收

    Java内存分配和回收,主要就是指java堆的内存分配和回收.java堆一般分为2个大的区域,一块是新生代,一块是老年代.在新生代中又划分了3块区域,一块eden区域,两块surviver区域.一般称 ...

  6. Java虚拟机中的内存分配

    java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途以及创建和销毁的时间. 栈:存放的是局部变量,包括:1.用来保存基本数据类型的值:2.保存类 ...

  7. Java虚拟机面试重点-------------内存分配和回收策略

    1 对象优先分配在Eden区 对象优先在Eden进行分配,大多数情况下,对象在新生代Eden区进行分配.当Eden区没有足够的空间进行分配时,虚拟机会发起一次Minor GC. 新生代GC(Ninor ...

  8. 深入理解JAVA虚拟机原理之内存分配策略(二)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 1.对象优先在Eden分配 大多情况,对象在新生代Eden区分配.当Eden区没 ...

  9. Java虚拟机学习 - 对象内存分配与回收 ( 5 )

    对象优先在Eden上分配 大多数情况下,对象优先在新生代Eden区域中分配.当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC).Minor GC期间虚拟机将E ...

  10. java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4)

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项 ...

随机推荐

  1. 泛型和Object的区别?

    泛型声明 public <T> T doSomeThing(T t){ return t; } Object声明 public Object doSomeThing(Object obj) ...

  2. 5-create-react-app整合antDesign功能

    使用ant-design: 首先创建react项目: create-react-app app cd app 其次 AntDesign的高级配置:按需导入组件,自定义主题 1.下载依赖(利用yarn, ...

  3. ANSYS-MFC生成APDL

    目录 1. 简介 2. APDL生成 3. 调用ANSYS批处理 1. 简介 对于ANSYS-MFC二次开发,两者之间的关系非常明确,从界面中读取参数并转换成APDL语言,然后调用批处理操作. 对于简 ...

  4. Java基础 -2.3

    浮点数类型 所有的数据类型进行自动转型的时候都是由小类型到大类型进行自动转换处理.默认的类型为double,但是也可以定义位数相对较少的float变量 ,此时从赋值的时候就必须采用强制类型转换 pub ...

  5. 夯实Java基础(十九)——集合

    1.前言 集合在Java中的地位想必大家都知道,不用多BB了.无论是在我们现在的学习中还是在今后的工作中,集合这样一个大家族都无处不在,无处不用.在前面讲到的数组也是一个小的容器,但是数组不是面向对象 ...

  6. CCF认证201909-4推荐系统

    #include <iostream> #include <list> #include <set> #include <vector> using n ...

  7. 小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面

    原文:http://blog.csdn.net/jkingcl/article/details/10989773       今天我们主要来介绍登陆页面的实现,主要讲解的就是涉及到的布局,以及简单的跳 ...

  8. DoMes平台首页菜单栏

    问题1:左侧菜单栏数据是在哪里获取的? 答案1: 项目根目录的Views/Home/Index文件为平台首页 打开Index.cshtml文件,有一个framework-clientdata.js引入 ...

  9. vue dialog每次打开会展示上一次数据(转载)

    原文地址: (https://www.jianshu.com/p/82b6681d0768) 在dialog外套一层div,div中以v-if来控制组件el-dialog的出现与否,每次弹出el-di ...

  10. token和session的区别

    session和token都是用来保持会话,功能相同 一.session机制,原理 session是服务端存储的一个对象,主要用来存储所有访问过该服务端的客户端的用户信息(也可以存储其他信息),从而实 ...