1.内存分配参数---大纲

  1. Ø如何设置堆内存
  2. Ø如何设置栈内存
  3. Ø如何设置方法区
  4. Ø如何设置对的分配比率
  5. Ø设置参数打印堆栈;
  6. ØJava程序的两种模式:Server&Client

2.设置堆内存

Ø设置最大堆内存
Ø参数:-Xmx10M,表示堆内存最大为10M,如果超过10M则会出现内存溢出的异常。
Ø查看方法: maxMemory()
Ø设置最小堆内存
Ø参数:-Xms2M,系统初始化的时候就会分配2M内存给java程序。
Ø设置新生代内存
Ø参数1:-Xmn5M,表示堆内存中新生代内存大小为5M,如果超过则会向老年代申请空间。
Ø参数2:-XX:NewSize(最小的新生代大小)-XX:MaxNewSize(最大的新生代大小)
Ø-Xmn5M==-XX:NewSize5M –XX:MaxNewSize5M
Ø参数2不建议使用,会引起内存震荡。

3、方法区内存

Ø之前说过,对于使用了CGLib,Javassist,ASM等动态生成大量class类的框架尤其需要注意该内存的设置。
Ø最小设置
Ø参数:-XX:PermSize=4M;
Ø解释:表示方法区最小的内存为4M,JVM初始化的时候就会分配至少4M的方法区内存。
Ø最大设置
Ø参数:-XX:MaxPermSize=10M
Ø解释:表示方法区最大的内存为10M,当动态扩展超过10M的时候就会出现内存溢出。

4、栈内存

Ø栈内存貌似没有设置最大最小的参数,根据我的理解配置的参数是最大的,也就是说最大不能超过,如果没有线程则不会分配,这样应该是合理的,他的生命周期和线程一样。
Ø配置参数:-Xss10M
Ø解释:表示为没一个线程分配10M的空间
Ø注意事项:
Ø如果一个线程的内存使用超过了-Xss的设置则会抛出异常
Ø如果给栈内存设置较大,则同时开启的线程数必然减少。
Ø栈内存的大小还会影响到堆内存的大小;

5、分配比率

Ø堆的分配比率:
Ø新生代:占据整个堆的1/4~1/3为最佳
Ø新生代和s区的分配:最好设置为8:1为最佳
Ø配置参数:-XX:SurvivorRatio=8
Ø新生代和老年代的分配:最好设置为2:1为最佳
Ø配置参数:-XX:NewRatio=2

6、参数总结

配置

说明

-Xms

设置堆内存的最小值

-Xmx

设置堆内存的最大值

-Xss

设置栈内存的大小

-XX:MinHeapFreeRatio

设置堆内存的最小空闲比例

-XX:MaxHeapFreeRatio

这是堆内存的最大空闲比例

-XX:NewSize

设置新生代的最小内存值

-XX:NewMaxSize

设置新生代的最大内存值

-XX:SurviorRatio

设置Eden区和Survior区的比例

-XX:MaxPermSize

设置持久代的最大值

-XX:PermSize

设置持久代的最小值

-XX:TargetSurvivorRatio

设置survivor区的可使用率

7、打印GC信息

Ø不论是在进行MinorGC还是FullGC,使用该参数都可以当前的内存使用情况;
Ø参数如下:
Ø-XX:+PrintGCDetails
Ø-verbose:gc

Ø上面两个都可以,第一个较为详细!

8、Java运行模式

ØJava不会显式的制定运行的模式,JVM会根据内存的大小自动进行判断,主要有Server和Client两种模式。
ØServer模式
Ø启动速度慢
Ø运行速度快
ØJVM在Server模式默认-Xms是128M,-Xmx是1024M
ØClient模式
Ø启动速度快
Ø运行速度没有Server模式快
ØJVM在client模式默认-Xms是1M,-Xmx是64M

JVM之---Java内存分配参数(第四篇)的更多相关文章

  1. java内存分配和String类型的深度解析

    [尊重原创文章出自:http://my.oschina.net/xiaohui249/blog/170013] 摘要 从整体上介绍java内存的概念.构成以及分配机制,在此基础上深度解析java中的S ...

  2. Java深入 - Java 内存分配和回收机制

    Java的GC机制是自动进行的,和c语言有些区别需要程序员自己保证内存的使用和回收. Java的内存分配和回收也主要在Java的堆上进行的,Java的堆中存储了大量的对象实例,所以Java的堆也叫GC ...

  3. Java内存分配和GC

    Java内存分配和回收的机制概括的说,就是:分代分配,分代回收. 对象将根据存活的时间被分为:年轻代(Young Generation).年老代(Old Generation).永久代(Permane ...

  4. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...

  5. 【转】java内存分配和String类型的深度解析

    一.引题 在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题.下面是本 ...

  6. Android内存优化1 了解java内存分配 1

    开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...

  7. Java深入 - Java 内存分配和回收机制-转

    Java的GC机制是自动进行的,和c语言有些区别需要程序员自己保证内存的使用和回收. Java的内存分配和回收也主要在Java的堆上进行的,Java的堆中存储了大量的对象实例,所以Java的堆也叫GC ...

  8. Java内存分配

    概述 对从事C和C++的程序员来说,在内存管理方面,他们既是拥有最高权利的人,也是从事最基础工作的“劳动人民”. 而对于Java程序员来说,JVM自动进行内存管理,程序员不再需要为每一个new操作去写 ...

  9. Java 内存分配全面浅析

    本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java.这类文章网上有很多,但大多比较零碎.本文从认知过程角度出发,将带给读者一个系统的介绍. 进入正题前首先要知道的是Java程 ...

随机推荐

  1. git 提交

    git rebase -i 在使用git开发的时候经常会面临一个常见的问题.多个commit 需要合并为一个完整的commit提交. 合并多个commit为一个完整的commit 我先基于develo ...

  2. 关于 Java 性能监控您不知道的 5 件事,第 1 部分

    责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java? 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...

  3. BZOJ 3713: [PA2014]Iloczyn

    Description 斐波那契数列的定义为:k=0或1时,F[k]=k:k>1时,F[k]=F[k-1]+F[k-2].数列的开头几项为0,1,1,2,3,5,8,13,21,34,55,-你 ...

  4. 被FBI点名的中国黑客-Lion

    网名:Lion(狮子) 真实姓名:林勇 QQ:21509     简介:红客联盟创始人(该组织在2001年5月的黑客大战中一举成名,会员人数最多时达到6万,很有影响力),现在安氏因特网安全系统(中国) ...

  5. js library

    jquery.js prototype.js requirejs.js backbone.js modernizr.js knockout.js http://share.renren.com/sha ...

  6. 关于SQL语句中SUM函数返回NULL的解决办法

    SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如 ...

  7. 李洪强漫谈iOS开发[C语言-022]-算术运算符

  8. 学习笔记-[Maven实战]-第二章:Maven安装和配置

    在windows上安装Maven 1.检查JDK安装:在CMD下运行以下命令来检查JAVA安装情况: 命令: C:\Documents and Settings\Administrator>ec ...

  9. 【HDOJ】1058 Humble Numbers

    简单题,注意打表,以及输出格式.这里使用了可变参数. #include <stdio.h> #define MAXNUM 5845 #define ANS 2000000000 int b ...

  10. WCF - Consuming WCF Service

    WCF services allow other applications to access or consume them. A WCF service can be consumed by ma ...