码迷,mamicode.com
首页 > 编程语言 > 详细

Java jvm内存调优(来自小强公开课)

时间:2017-12-19 12:23:14      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:jvm

Java jvm内存调优

 

 

Jdkjava开发工具包

Jrejava运行环境,运行你编写的java程序

Jvmjava虚拟机,.class文件在虚拟机上运行

 

如何选择合适的java虚拟机

》》》选择稳定的jdk(慎用新出的,新特性的)

》》》根据平台和应用,选择合适厂商的jdkHP-UX只能选择HP JDK,AIX只能选择IBM JDK;windows linux可以选择SUN JDK;solaris平台最好使用SUN JDK;开源JDK,目前生产环境中用的极少

》》》32bit or 64bit

》》》内存需求较小,CPU密集型应用选32bit

》》》大内存应用则选64bit(突破4G内存限制、吞吐量稍高)

 

Java内存

》》》Java内存 = 堆内存+非堆内存

》》》堆内存 = 年轻代+年老代 -Xms(最小)-Xmx(最大)

》》》非堆内存 = 永久代+其他 -XX:Pemsize -XX:MaxPermSise

》》》最新的java8中的jvm已经去掉了永久代,以Metaspace元空间代替

 

内存典型问题

》》》OOM VS ML

》》》OOM内存溢出,是程序在申请内存时,没有足够的内存供其使用

》》》ML内存泄露,是指程序在申请内存后,无法释放已申请的内存空间,导致这块内存一直占用

》》》最终表现基本是一样的,通常内存泄露ML最终会导致OOM错误。实际应用中不要太过纠结或划清界限,每种现象都是关联的。

 

内存问题常发生在什么区域

》》》heap堆内存和pemanent

》》》JVM进程内存和java使用的第三方本地代码

 

比如:

》》》java堆内存不足,无法再分配新对象或内存块

》》》java堆内存充足,但是S0,S1eden,Old区分配不合理

 

如何预防内存方面的问题

系统方面:

》》》足够的物理内存

》》》最佳的堆设置

》》》稳定的OSjdk

》》》适当的垃圾回收算法策略

 

代码方面:

》》》不要放置大量对象到session

》》》用完的资源一定要释放,例如IOfilejdbc

》》》不要违反j2ee规范

》》》合理的从数据库取得适量的数据(能从缓存拿就从缓存拿)

》》》好的代码习惯


Java jvm内存调优(来自小强公开课)

标签:jvm

原文地址:http://blog.51cto.com/10672221/2051997

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!