JVM内存模型和关键参数设置
一. JVM内存模型:
Jvm内存模型是学好Java很重要的一部分,该部分学习能让我们在系统运维的时候,或者优化服务器的时候能够有方法,懂原理。
二. Jvm关键参数:
1. 堆大小设置参数:
-Xms -Xmx 这个参数是设置堆最大值与最小值。
在线上常常将这两个值设置成一样大,免去JVM调整堆大小影响性能,一般该值设置为服务器可用内存的的最大值80%。
-Xmn 这个参数是设置年轻代大小,SUN官方推荐该值配置为整个堆得3/8。
-XX:PermSize 这个参数是设置非堆内存的初始值, 默认是物理内存的1/64。
-XX:MaxPermSize 这个参数是设置最大的非堆内存,默认是物理内存的1/4。
如果程序中有比较大的文件导出时,一定要把这两个值设置上,否则可能会报内存溢出异常。
如果这个区有内存溢出的情况,大量使用反射有可能会引起该异常。
有一个比较好的解决方法:增加或增大:-XX:MaxPermSize=XXXM
增强版解决方法:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled
-server 服务器模式,默认是-client模式,请务必作为第一个参数。
-XX:SurvivorRatio 这个参数是设置Eden和Survivor区的大小比例。
-Xss 这个参数是设置每个线程的栈大小,一般设置不易超过1M大小,否则容易报异常内存溢出。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/xmail/errorLog 这个参数是设置JVM崩溃的时候会打印出heap dump。
-XX:+AggressiveOpts 这个参数是设置JDK版本升级时,你的JVM都会使用最新加入的优化技术。
-Djava.awt.headless=true 这个参数是解决图表不兼容问题,一般放在最后设置。
JVM内存模型和关键参数设置的更多相关文章
- jvm内存模型及分配参数
jvm内存模型 程序计数器:是一块很小的内存空间.当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源.每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令. java虚拟机 ...
- java jvm内存管理/gc策略/参数设置
1. JVM内存管理:深入垃圾收集器与内存分配策略 http://www.iteye.com/topic/802638 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想 ...
- jvm内存模型、常见参数及调优
JVM内存结构: 主要分为:方法区.堆.虚拟机栈.本地方法栈.程序计数器,其中方法区和堆是线程共享的,其他的都是线程隔离的. 方法区: 主要存放类的信息.静态变量.常量.编译后的方法代码,永久代Per ...
- JVM内存模型和启动参数的关系
今天开始接触JVM的内存模型这一块的内容,以下这张图是从网上找的,先收藏了,虽然现在还看不太懂.以后弄懂了才进行详细的解说.
- JVM内存模型及配置参数
JVM 分为堆.栈.方法区.程序计数器.本地方法栈 栈内存存放局部变量表.操作栈.动态链接.方法出口等信息 1. 局部变量表存放了编译期可知的各种基本数据类型(boolean.byte.char.s ...
- 记录JVM内存模型,参数含义和优化
一.JVM内存模型 (图片来自网络) 根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) Perm (永久代) 其中New和Tenured属于堆内存,堆内存会从J ...
- 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置
VM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃圾 ...
- JVM内存模型和性能优化 转
JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型: 多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...
- JVM内存模型和性能优化
JVM内存模型优点 内置基于内存的并发模型: 多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁. 多核并行计算模 ...
随机推荐
- 深入理解JavaScript中创建对象模式的演变(原型)
深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...
- JS-制作可伸缩的水平菜单栏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- ASP.NET 递归将分类绑定到 TreeView
CREATE TABLE [dbo].[sysMenuTree]([NoteId] [decimal](18, 0) NOT NULL,[ParentId] [decimal](18, 0) NULL ...
- Java——复选框:JCheckBox
import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java. ...
- Unity Editor开发
SerializedObject SerializedObject.Update()更新所有序列化对象的值:SerializedObject.ApplyModifiedProperties()应用序列 ...
- JQuery中serialize()、serializeArray()和param()方法示例介绍
在项目中做form表单提交的时候,如果参数比较少,可以通过jquery一个个取得,但是当 form表参数很多的情况下,还是一一取得的话无疑是加大了工作量,那我们需要咱们获取到表单的所有参数呢,幸好,j ...
- 一个 Sql语句优化的问题- STATISTICS 统计信息
前段时间,同事遇到一个 Sql语句的问题,一个列表分页功能响应在30 s以上,看数据库里面的数据条数,数据量也不大,相关字段的一些索引也都有,可就是慢.于是找出具体的sql 语句出来分析,分页功能主要 ...
- php Hash Table(二) Hash函数
哈希表最关键的几个方面有: 通过key访问(通过哈希函数计算出key) 映射到数据结构中(哈希表本身的存储结构) 映射的处理(冲突或者碰撞检测和处理函数) 理解PHP的哈希算法 一般来说对于整形索引进 ...
- ssh远程连接ubuntu
1. 首先在服务器上安装ssh的服务器端. $ sudo aptitude install openssh-server 2. 启动ssh-server. $ sudo /etc/init.d/ss ...
- Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念
开发者通过对象来 存储并传递数据. 在对象之间传递数据并执行任务的过程就叫做“消息传递”. 这两条特性的工作原理? Objective-C运行期环境(Objective-C runtime) ,提供了 ...