JDK7与8内存参数解析与修改
JDK内存
jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配。
运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)
- Xss:每个线程的stack大小(栈)
- Xmx:JAVA HEAP的最大值、默认为物理内存的1/4
- Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样
- Xmn:JAVA HEAP young区的大小(相当于对-XX:newSize、-XX:MaxnewSize同时设置)
- XX:PermSize:设定内存的永久保存区域(JDK7)
- XX:MaxPermSize:设定最大内存的永久保存区域(JDK7)
JDK1.7调节参数与查看参数:
Administrator@MicroWin10-1535 MINGW64 ~/Desktop/test
$ javac Test.java Administrator@MicroWin10-1535 MINGW64 ~/Desktop/test
$ java -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m Test
C:\Users\Administrator>jps
19284 Jps
6628 NetworkServerControl
18072
22340
21860 Test C:\Users\Administrator>jmap -heap 21860
Attaching to process ID 21860, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.80-b11 using thread-local object allocation.
Parallel GC with 4 thread(s) Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 536870912 (512.0MB)
MaxPermSize = 536870912 (512.0MB)
G1HeapRegionSize = 0 (0.0MB) Heap Usage:
PS Young Generation
Eden Space:
capacity = 268959744 (256.5MB)
used = 10758632 (10.260231018066406MB)
free = 258201112 (246.2397689819336MB)
4.000090065522965% used
From Space:
capacity = 44564480 (42.5MB)
used = 0 (0.0MB)
free = 44564480 (42.5MB)
0.0% used
To Space:
capacity = 44564480 (42.5MB)
used = 0 (0.0MB)
free = 44564480 (42.5MB)
0.0% used
PS Old Generation
capacity = 716177408 (683.0MB)
used = 0 (0.0MB)
free = 716177408 (683.0MB)
0.0% used
PS Perm Generation
capacity = 536870912 (512.0MB)
used = 2614432 (2.493316650390625MB)
free = 534256480 (509.5066833496094MB)
0.48697590827941895% used 1523 interned Strings occupying 140352 bytes.
当然了:还有另外的配置,只是不常用
-XX:NewSize:新生代初始化内存的大小(注意:该值需要小于-Xms的值)。
-XX:MaxNewSize:新生代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值)。
-Xmn:对-XX:newSize、-XX:MaxnewSize两个参数同时进行配置(注意:JDK1.4之后才有该参数)。
例如:
java -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:OldSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m Test
查看内存:

或者:
java -Xms1024m -Xmx1024m -Xmn512m -XX:PermSize=512m -XX:MaxPermSize=512m Test
结果:

在JDK1.8中,取消了PermGen,取而代之的是Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是元空间:
例如下面配置设置元空间的大小和最大大小:(等同于JDK7的永久区)
liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)
$ javac Test.java liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)
$ java -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m Test
查看参数:
C:\Users\liqiang>jmap -heap 2381712
Attaching to process ID 2381712, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13 using thread-local object allocation.
Parallel GC with 4 thread(s) Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 357564416 (341.0MB)
MaxNewSize = 357564416 (341.0MB)
OldSize = 716177408 (683.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 536870912 (512.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 536870912 (512.0MB)
G1HeapRegionSize = 0 (0.0MB) Heap Usage:
PS Young Generation
Eden Space:
capacity = 268435456 (256.0MB)
used = 10737448 (10.240028381347656MB)
free = 257698008 (245.75997161865234MB)
4.000011086463928% used
From Space:
capacity = 44564480 (42.5MB)
used = 0 (0.0MB)
free = 44564480 (42.5MB)
0.0% used
To Space:
capacity = 44564480 (42.5MB)
used = 0 (0.0MB)
free = 44564480 (42.5MB)
0.0% used
PS Old Generation
capacity = 716177408 (683.0MB)
used = 0 (0.0MB)
free = 716177408 (683.0MB)
0.0% used 1597 interned Strings occupying 146680 bytes.
补充:查看JVM参数的方法
第一种:jps+jmap
C:\Users\Administrator>jps
Main
Jps Server
NetworkServerControl C:\Users\Administrator>jmap -heap
Attaching to process ID , please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13 using thread-local object allocation.
Parallel GC with thread(s) Heap Configuration:
MinHeapFreeRatio =
MaxHeapFreeRatio =
MaxHeapSize = (.0MB)
NewSize = (.0MB)
MaxNewSize = (.0MB)
OldSize = (.0MB)
NewRatio =
SurvivorRatio =
MetaspaceSize = 536870912 (512.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 536870912 (512.0MB)
G1HeapRegionSize = (.0MB) Heap Usage:
PS Young Generation
Eden Space:
capacity = (.0MB)
used = (.32839965820312MB)
free = (.6716003417969MB)
24.577509661129014% used
From Space:
capacity = (.5MB)
used = (.48738098144531MB)
free = (.0126190185546875MB)
99.98524091397113% used
To Space:
capacity = (.5MB)
used = (.0MB)
free = (.5MB)
0.0% used
PS Old Generation
capacity = (.0MB)
used = (.98236846923828MB)
free = (.0176315307617MB)
5.250355103518475% used interned Strings occupying bytes.
第二种:用JDK自带的工具 jconsole或者jvisualvm:


补充:32位windows平台对每个进程能管理的内存是有限制的,限制是2GB
JDK7与8内存参数解析与修改的更多相关文章
- linux下内存大小、起始地址的解析与修改
在实际的工作中,由于产品型号的不同,经常需要调整linux所管理的内存的大小,而内核在启动阶段,会两次去解析从uboot传递过来的关于内存的信息,具体如下: 一.解析从uboot传递过来的tag(在p ...
- jdk 8 的内存参数修改
jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配.运行时数据区通常包括这几个部分:程序计数器(Program Counter Register).Java栈(VM S ...
- Oracle系统结构之修改oracle内存参数
Linux主机16g内存,修改oracle数据库内存参数: 1.编辑/etc/fstab文件:针对tmpfs行将defaults改成defaults,size=12g(千万注意格式,不能出现错误) 修 ...
- top显示的内存各项参数解析
top观察进程数据时,会有如下几个内存参数(可以用f选择显示哪些参数): VIRT, RES, SHR, SWAP, CODE, DATA top实际上是从/proc/<pid>/stat ...
- Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析
废话就不多说了,直接开始啦~ 安装环境变量: 使用linx下的解压软件,解压找到里面的install 或者 ls 运行这个进行安装 yum install gcc yum install gcc-c+ ...
- /proc/sys/ 下内核参数解析
http://blog.itpub.net/15480802/viewspace-753819/ http://blog.itpub.net/15480802/viewspace-753757/ ht ...
- sysctl内核参数解析
sysctl内核参数解析 kernel.参数 kernel.shmall = 2097152 ## 1> 表示所有内存大小.可以分配的所有共享内存段的总和最大值.(以页为单位) ## 2& ...
- JAVA内存溢出解析(转)
JAVA内存溢出解析(转) 核心提示:原因有很多种,比如: 1.数据量过于庞大:死循环 :静态变量和静态方法过多:递归:无法确定是否被引用的对象: 2.虚拟机不回收内存(内存泄漏): 说白了就是程序运 ...
- Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析
之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析,通过对LoadModel函数的解析,能够很好理解. ...
随机推荐
- POI获取单元格的宽和高
获取单元格的宽,即获取所在列的宽.先获取单元格所在的sheet:cell.getSheet() sheet.getColumnWidth( cell.getColumnIndex() ) 单位不是像 ...
- 【BZOJ2424】[HAOI2010]订货(费用流)
[BZOJ2424][HAOI2010]订货(费用流) 题面 BZOJ 洛谷 题解 傻逼费用流吧... 一开始理解错意思了,仓库大小为\(m\)的含义是留到下个月最多为\(m\),而不是任意时刻的容量 ...
- 【BZOJ1821】[JSOI2010]部落划分(二分,并查集)
[BZOJ1821][JSOI2010]部落划分(二分,并查集) 题面 BZOJ 洛谷 题解 二分答案,把距离小于二分值的点全部并起来,\(\mbox{check}\)一下是否有超过\(K\)个集合就 ...
- 【转】__int64 与long long 的区别
//为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int ...
- centos7安装redis的正确姿势
目前redis5已经发布,Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本.按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的 ...
- Python使用TCPServer编写(多线程)Socket服务
SocketServer包对socket包进行了包装(封装),使得创建socket服务非常简单. TCPServer+BaseRequestHandler 使用TCPServer和BaseReques ...
- Segment 李超线段树
题目大意: 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段.记第 i 条被插入的线段的标号为 i 2.给定一个数 k,询问与直线 x = k 相交的线段中,交点最靠上的线段的编号. 若 ...
- A1035. Password
To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...
- 试着用c写了一个多线程的同步
在Java中写多线程相关的程序简单很多,在多线程中需要同步的时候,使用synchronized就行了. 最近学习c的多线程与同步,感觉实现起来,要写的代码比较多一些,这也许是因为java封装的比较好吧 ...
- 外显子分析报错解决方案bin field of BAM record does not equal value computed based on alignment start and end, and length of sequence to which read is aligned
以下链接给出了解决方案:https://gatkforums.broadinstitute.org/gatk/discussion/4290/sam-bin-field-error-for-the-g ...