Java 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规范

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

》》》好的代码习惯


本文转自 32氪 51CTO博客,原文链接:http://blog.51cto.com/10672221/2051997

相关文章
|
22小时前
|
缓存 监控 Java
Java一分钟之-Apache Geode:分布式内存数据平台
【5月更文挑战第21天】Apache Geode是低延迟的分布式内存数据平台,用于构建实时应用,提供缓存、数据库和消息传递功能。本文聚焦于Geode的常见问题,如数据一致性(数据同步延迟和分区冲突)和性能瓶颈(网络延迟和资源管理不当),并提出解决方案。确保数据一致性可通过选择合适的数据策略和利用`InterestPolicy`、`CacheListener`;提升性能则需优化网络和合理配置资源。通过示例代码展示了如何创建和操作Geode的Region。正确配置和调优Geode对于实现高可用、高性能应用至关重要。
15 1
|
1天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
1天前
|
算法 Java 编译器
从Java字节码到JIT编译器,深入理解Java虚拟机
Java虚拟机(JVM)是Java程序运行的关键。想深入理解Java虚拟机,我们需要了解Java字节码、类加载机制、垃圾回收算法、JIT编译器等方面的知识。本文将介绍这些关键知识点,并通过示例代码加深理解。
|
4天前
|
移动开发 前端开发 JavaScript
Java和web前端,IT新人该如何选择?,2024年最新Web前端内存优化面试
Java和web前端,IT新人该如何选择?,2024年最新Web前端内存优化面试
|
5天前
|
Java 数据库连接 Spring
K8S+Docker理论与实践深度集成java面试jvm原理
K8S+Docker理论与实践深度集成java面试jvm原理
|
5天前
|
存储 算法 Java
Java一分钟之-Java内存模型与垃圾回收机制概览
【5月更文挑战第16天】本文简述Java内存模型(JMM)和垃圾回收(GC)机制。JMM包括栈、堆、方法区、程序计数器和本地方法栈。GC负责回收不再使用的对象内存,常用算法有新生代、老年代和全堆GC。文章讨论了内存溢出、死锁和GC性能等问题,提出了解决方案,如调整JVM参数和优化GC策略。此外,还强调了避免内存泄漏、大对象管理及正确释放资源的重要性。理解这些概念有助于提升Java应用的性能和稳定性。
14 1
|
6天前
|
Java Linux Arthas
linux上如何排查JVM内存过高?
linux上如何排查JVM内存过高?
792 0
|
6天前
|
存储 缓存 算法
深入浅出JVM(十四)之内存溢出、泄漏与引用
深入浅出JVM(十四)之内存溢出、泄漏与引用
|
6天前
|
Java 索引
深入浅出JVM(五)之Java中方法调用
深入浅出JVM(五)之Java中方法调用
|
Java 开发者 微服务
Java精品公开课合集
这里你能找到Java精品公开课合集
4171 0