Java内存区域与OOM http://www.iteye.com/topic/802573
·程序计数器:保留线程执行到的指令
·栈:编译期间预期的变量表。层次深:栈溢出;无法创建更多的栈OOM;线程个数=(系统内存-堆-年老代-保留区域)/每个栈空间
·本地栈:native,也会OOM
·堆(eden、s0、s1+old):生成大量无法回收的对象OOM
·方法区:加载类过多OOM
·常量区:生成太多常量OOM
垃圾收集器与内存分配策略 http://www.iteye.com/topic/802638
·引用计数器:简单,但无法找到循环引用的情况
·搜索算法:从root搜索(比如栈的引用、static方法引用)
·标记-清除:效率低、碎片多
·复制:速度快,浪费内存;适用于90%生出来就要销毁的对象
·ParNew(young)+CMS(old):追求stop-the-world时间更短
full gc触发的可能
·旧生代空间不足:默认68%,CMSInitiatingOccupancyFraction=80
·持久代空间不足:CMSPermGenSweepingEnabled 、CMSClassUnloadingEnabled
·promotion failed:由于救助空间不够,从而向年老代转移对象,年老代没有足够的空间来容纳这些对象,导致一次full gc的产生。解决这个问题的办法有两种完全相反的倾向:增大救助空间、增大年老代或者去掉救助空间。
·concurrent mode failure:问题的产生原因是由于CMS回收年老代的速度太慢,导致年老代在CMS完成前就被沾满,引起full gc,避免这个现象的产生就是调小-XX:CMSInitiatingOccupancyFraction参数的值,让CMS更早更频繁的触发,降低年老代被沾满的可能
·统计得到新生代minor gc时晋升到旧生代的平均大小小于旧生代剩余空间
·直接调用System.gc,可以DisableExplicitGC来禁止
·存在rmi调用时,默认会每分钟执行一次System.gc,可以通过-Dsun.rmi.dgc.server.gcInterval=3600000来设置大点的间隔。
gc小工具
·jps
·jstat :jstat -gcutil/gc/gccause/class -t -h10 pid 1000
·jmap:jmap -heap pid;jmap -histo:live pid;jmap -dump:live,format=b,file=dump.bin pid
·jstack:jstack pid
·jinfo:jinfo -flag xxx pid
分享到:
相关推荐
摘要:本文主要介绍了 JVM 对象创建和内存分配的原理,通过示例代码详细地介绍了对象创建和内存分配的过程。文章从 JVM 对象创建的过程开始,介绍了检查参数、类加载、内存分配和对象设置等步骤,然后详细介绍了内存...
关于作者 你好,我是七哥,90后互联网程序员;... Java并发,JVM,Spring,Spring Boot,Mybatis,Linux,MySQL,Redis,数据结构和算法,Docker,大数据 Java领域 Java并发 设计模式 程序人生
摘要:本篇文章将介绍如何使用 Kettle 连接 MySQL 数据库,包括实验环境的设置、实验过程、出现的问题和解决方案。文章还将介绍 Kettle 与 MySQL 的集成过程中需要注意的重要细节。 一、实验环境设置 在开始实验...
在JVM加载加密class文件时,需要使用特殊的ClassLoader来完成class的解密和Class对象的生成。解密和Class对象的生成是通过C语言和JNI(Java Native Interface)实现的,从而增加了破解的难度。解密步骤中包含了一...
#### 摘要 本文旨在探讨如何在IBM WebSphere Application Server (WAS) 3.5、4.01 和 5.0 版本上诊断和定位 Java 内存泄漏问题,包括分布式环境和 z/OS 环境。文章将介绍一种通用的方法论,讲解如何收集诊断数据、...
对于【JAVA面试常被问到的题目[转载+解答] - Moon Face - 博客园.png】这个文件,通常它可能包含了一篇博客文章的截图,其中详细解答了一些Java面试题。如果能够查看这个文件,你将得到更具体的答案和解析,帮助你在...
#### 摘要 本文深入探讨了Java垃圾回收机制的特点及其在Java虚拟机(JVM)中的应用,并详细分析了几种典型的垃圾收集算法。此外,文章还介绍了如何通过命令行参数来调整垃圾回收的行为以及`finalize`方法的作用。...
接着,文章详细介绍了Java编程语言的关键组件和概念,包括Java虚拟机(Java Virtual Machine,简称JVM)。此外,还提供了电子商务领导者如何使用Java的实际案例,并解释了Java在数据仓库、数据挖掘以及工业自动化等...
下面是一些Java相关的知识点摘要,包括基础知识、框架、并发、内存管理和设计模式等。 1. **Java基础知识**: - 自动装箱:Java SE 5.0引入了自动装箱和拆箱机制,将基本类型和其对应的包装类之间进行转换。 - ...
【摘要】中提到的是一种针对实时Java处理器的指令存取部件设计与实现的研究。Java语言在各个领域广泛应用,但在嵌入式实时应用中,由于其执行速度的不足,往往无法满足应用标准。为解决这个问题,设计一个支持Java的...
#### 摘要 本文详细阐述了一种针对国产操作系统平台(COSAX)的Java及时编译器的设计与实现技术。该技术结合了指令静态模拟与宏替换的编译方法,并通过抽象出平台独立的指令属性四元组来提高程序的可移植性。文章还...
- **内容**:在体育主题下,a.txt 可能包含了比赛结果、运动员统计数据、训练计划、运动科学的研究摘要、体育新闻或运动指南等内容。 - **解析工具**:可以使用文本编辑器(如 Notepad、TextEdit)或编程语言...
【摘要】:这篇论文主要探讨了Java实时规范中的非堆内存抽象,并且针对实现过程中可能出现的不确定性和运行时的时间不可预测性问题,提出了一种适用于硬Java实时平台的非堆内存模型。该模型依赖于硬Java实时平台的...
简要摘要: nctoolbox是工具箱,它提供对数据集的只读访问。 在后台,nctoolbox使用作为数据访问层。 这使nctoolbox可以使用相同的API访问 , , ,GRIB,GRIB2,HDF4以及许多(15+)其他文件格式和服务。 它适用于...
例如,使用线程池来并发处理任务,使用连接池管理数据库连接,以及合理设置JVM参数以优化内存使用。 9. **分布式处理**:大型搜索引擎通常会采用分布式系统架构,如Hadoop和Spark,来处理海量数据和高并发查询。...
#### 摘要 随着新一代智能手机平台Android的发布和中国3G网络投入运营,不同智能手机平台间的即时通信(Instant Messaging, IM)应用变得越来越重要。本篇文章详细分析了实现Android与J2ME(Java 2 Platform, Micro...
notes多数文章来自网上优秀文章摘要整合,学习时自己记录的笔记 依赖环境: JDK版本:1.8; Mysql版本:8.0.16; Kafka版本:2.2.1; RabbitMQ版本:3.7.15; Redis版本:5.0.4; Maven版本:3.6.1 ZooKeeper...
在本篇文章中,我们将深入探讨IBM Websphere Portal Server 6.0 (以下简称WPV6)的安装与配置过程。WPV6是基于Java 2 Platform, Enterprise Edition (J2EE) 构建的应用程序,它运行在Websphere Application Server ...