Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

java memory model

upan edited this page Jun 20, 2016 · 16 revisions

Java 内存模型

栈(Stack)

相关启动参数:

-Xss 每个线程的栈大小

根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。一般小的应用,如果栈不是很深,应该是128k够用,大的应用建议使用256k。这个选项对性能影响比较大。

本地方法栈

方法区(Method Area)

相关启动参数

  • -XX:PermSize 设置Perm区的初始大小,默认物理内存的1/64
  • -XX:MaxPermSize 设置Perm区的最大值,物理内存的1/4

堆(Heap)

相关启动参数

  • -Xms 设置堆内存初始化大小,默认是物理内存的1/64但是小于1G
  • -Xmx 设置堆内存最大值,默认是物理内存的1/4但小于1G,服务器一般设置 -Xms、-Xmx相等以避免每次GC后调整堆的大小
  • -XX:MaxTenuringThreshold 设置对象在新生代中存活的次数,如果设置为0的话,则年清代对象不经过Survivor区,直接进入老年代。对于老年代比较多的应用可以提高效率。如果将此值设置为一个较大值,则年清代对象会在Survivor区进行多次复制,这样可以增加对像在年清代的存活时间,增加在年清代即呗回收的概率
  • -XX:PretenureSizeThreshold 设置超过指定大小的对象直接分配在老年代

堆-新生代 (Young Generation)

相关启动参数:

  • -Xmn设置新生代内存大小,增大年轻代后,将会减小老年代大小,此值对系统吸能影响较大,Sun 官方推荐配置为整个堆的3/8
  • -XX:SurvivorRatio 设置Eden与Survivor 空间的大小比例,这只为8,则两个Survivor区

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /