JVMのメモリモデルとチューニングパラメータ

コンセプト差ヒープ、スタック、メソッド領域

1.堆
堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。根据垃圾回收机制的不同,
Java堆有可能拥有不同的结构,最为常见的就是将整个Java堆分为新生代和老年代。其中新声带存放新生的对象或者年龄不大的
对象,老年代则存放老年对象。新生代分为edn区、s0区、s1区,s0和s1也被称为from和to区域,他们是两块大小相等并且可以
互相角色的空间。绝大多数情况下,对象首先分配在eden区,在新生代回收后,如果对象还存活,则进入s0或s1区,之后每经
过一次新生代回收,如果对 象存活则它的年龄就加1,对象达到一定的年龄后,则进入老年代.

2.栈
Java栈是一块线程私有的空间,一个栈,一般由三部分组成:局部变量表、操作数据栈和帧数据区
局部变量表:用于报错函数的参数及局部变量
操作数栈:主要保存计算过程的中间结果,同时作为计算过程中的变量临时的存储空间。
帧数据区:除了局部变量表和操作数据栈以外,栈还需要一些数据来支持常量池的解析,这里帧数据区保存着
访问常量池的指针,方便计程序访问常量池,另外当函数返回或出现异常时卖虚拟机子必须有一个异常处理表,方便发送异常
的时候找到异常的代码,因此异常处理表也是帧数据区的一部分。

3.方法区
Java方法区和堆一样,方法区是一块所有线程共享的内存区域,他保存系统的类信息。
比如类的字段、方法、常量池等。方法区的大小决定系统可以保存多少个类。如果系统
定义太多的类,导致方法区溢出。虚拟机同样会抛出内存溢出的错误。方法区可以理解
为永久区。

Javaのメモリアーキテクチャ

1、  类加载子系统:负责从文件系统或者网络加载Class信息,加载的信息存放在一块称之方法区的内存空间。
2、  方法区:就是存放类的信息、常量信息、常量池信息、包括字符串字面量和数字常量等。
3、  Java堆:在Java虚拟机启动的时候建立Java堆,它是Java程序最主要的内存工作区域,几乎所有的对象实例都存放到
Java堆中,堆空间是所有线程共享。
4、  直接内存:JavaNio库允许Java程序直接内存,从而提高性能,通常直接内存速度会优于Java堆。读写频繁的场合可能会考虑使用。
5、  每个虚拟机线程都有一个私有栈,一个线程的Java栈在线程创建的时候被创建,Java栈保存着局部变量、方法参数、同事Java的方法调用、
返回值等。
6、  本地方法栈,最大不同为本地方法栈用于本地方法调用。Java虚拟机允许Java直接调用本地方法(通过使用C语言写)
7、  垃圾收集系统是Java的核心,也是不可少的,Java有一套自己进行垃圾清理的机制。
8、  PC(Program Couneter)寄存器也是每个线程私有的空间, Java虚拟机会为每个线程创建PC寄存器,在任意时刻,
一个Java线程总是在执行一个方法,这个方法称为当前方法,如果当前方法不是本地方法,PC寄存器总会执行当前正在被执行的指令,
如果是本地方法,则PC寄存器值为Underfined,寄存器存放如果当前执行环境指针、程序技术器、操作栈指针、计算的变量指针等信息。
9、  虚拟机核心的组件就是执行引擎,它负责执行虚拟机的字节码,一般户先进行编译成机器码后执行。

仮想マシンの設定パラメータ

-XX:+PrintGC      每次触发GC的时候打印相关日志
-XX:+UseSerialGC      串行回收
-XX:+PrintGCDetails  更详细的GC日志
-Xms               堆初始值
-Xmx               堆最大可用值
-Xmn               新生代堆最大可用值
-XX:SurvivorRatio     用来设置新生代中eden空间和from/to空间的比例.

catalina.shでのTomcatのメモリオーバーフローがJVMのヒープサイズを変更します

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"

JVMのチューニングパラメータの概要

  • GC時間が十分に小さいです
  • GCに十分な時間以下
    GCの数は、より大きなヒープは、我々は唯一のバランスを選択することができることを保証しなければならないことを保証するのに十分小さい小さいヒープ、でなければなら少し時間をGCするためです。
    (1)-Xms -Xmxその最小値、最大値、最小値の間の収縮ヒープガベージコレクタを防ぐために、最大の追加の時間が生成され、我々は通常、最大、最小セットで一般的に、JVMスタックのために提供される定義同じ値
    デフォルト比に応じて旧世代の(2)及び若い世代:ヒープメモリが割り当てられる(12)は、それらの間に2つのNewRadioのサイズ比を調整することによって調整することができ、また、置換のために回収することができますこうした若い世代として、で
    -XX:NewSizeの-XX:その絶対サイズMaxNewSizeを設定します。同様に、ヒープの若い世代の収縮を防ぐために、我々は通常、-XXます:NewSizeパラメータ-XX:MaxNewSizeは、同じサイズに設定しました

おすすめ

転載: www.cnblogs.com/Libbo/p/11462780.html
おすすめ