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

相关文章
|
18天前
|
存储 Java 编译器
Java内存模型(JMM)深度解析####
本文深入探讨了Java内存模型(JMM)的工作原理,旨在帮助开发者理解多线程环境下并发编程的挑战与解决方案。通过剖析JVM如何管理线程间的数据可见性、原子性和有序性问题,本文将揭示synchronized关键字背后的机制,并介绍volatile关键字和final关键字在保证变量同步与不可变性方面的作用。同时,文章还将讨论现代Java并发工具类如java.util.concurrent包中的核心组件,以及它们如何简化高效并发程序的设计。无论你是初学者还是有经验的开发者,本文都将为你提供宝贵的见解,助你在Java并发编程领域更进一步。 ####
|
11天前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
9天前
|
Java Linux Windows
JVM内存
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制。
8 1
|
17天前
|
存储 缓存 安全
Java内存模型(JMM):深入理解并发编程的基石####
【10月更文挑战第29天】 本文作为一篇技术性文章,旨在深入探讨Java内存模型(JMM)的核心概念、工作原理及其在并发编程中的应用。我们将从JMM的基本定义出发,逐步剖析其如何通过happens-before原则、volatile关键字、synchronized关键字等机制,解决多线程环境下的数据可见性、原子性和有序性问题。不同于常规摘要的简述方式,本摘要将直接概述文章的核心内容,为读者提供一个清晰的学习路径。 ####
35 2
|
18天前
|
存储 安全 Java
什么是 Java 的内存模型?
Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)规范的一部分,它定义了一套规则,用于指导Java程序中变量的访问和内存交互方式。
44 1
|
24天前
|
存储 运维 Java
💻Java零基础:深入了解Java内存机制
【10月更文挑战第18天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
29 1
|
27天前
|
监控 安全 Java
Java Z 垃圾收集器如何彻底改变内存管理
大家好,我是V哥。今天聊聊Java的ZGC(Z Garbage Collector)。ZGC是一个低延迟垃圾收集器,专为大内存应用场景设计。其核心优势包括:极低的暂停时间(通常低于10毫秒)、支持TB级内存、使用着色指针实现高效对象管理、并发压缩和去碎片化、不分代的内存管理。适用于实时数据分析、高性能服务器和在线交易系统等场景,能显著提升应用的性能和稳定性。如何启用?只需在JVM启动参数中加入`-XX:+UseZGC`即可。
145 0
|
监控 Java
一篇搞定java调优的实战配置(下)
一篇搞定java调优的实战配置
83 0
|
Java 测试技术
一篇搞定java调优的实战配置(上)
一篇搞定java调优的实战配置
129 0
下一篇
无影云桌面