Java_JVM参数-XX:MaxDirectMemorySize 与 两种 ByteBuffer: heap,direct ByteBuffer
http://blog.csdn.net/u010003835/article/details/52957904
JVM调优的"标准参数"的各种陷阱[转]
http://breezylee.iteye.com/blog/2043056
Java方法区和运行时常量池溢出问题分析
http://www.cnblogs.com/luoxn28/p/5425425.html
利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
http://blog.csdn.net/wanghuiqi2008/article/details/50724676
查看JVM参数及值的命令行工具
http://blog.csdn.net/java2000_wl/article/details/8042010
Java应用问题定位系列——4种常见生成Heap Dump(堆快照)的方法
jcmd命令使用
jvm 性能调优工具之 jmap
如:jmap -histo 1736 | head 20
结合sort命令,来查看:一个JVM中什么类的实例最多?一个JVM中什么类的占用的合计容量最大?
Q:统计实例最多的类 前十位有哪些?
A:jmap -histo pid | sort -n -r -k 2 | head -10
Q:统计合计容量前十的类有哪些?
A:jmap -histo pid | sort -n -r -k 3 | head -10
Q:统计实例最多的类 前十位有哪些?包含xxx的
A:jmap -histo pid | grep xxx | sort -n -r -k 2 | head -10
说明:
sort命令的部分参数含义解释如下
-n :使用“”纯数字”进行排序(默认是以文字类型来排序)
-r : 反向排序
-k :以那个区间(field)来进行排序的意思
为了让tomcat退出前或者发生OutOfMemeoryError时自动dump堆栈信息
在tomcat启动参数中加入两个参数
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/home/tomcat/domains/server2/oom.hprof
参数说明
(1)-XX:+HeapDumpOnOutOfMemoryError 表示当JVM发生OOM时,自动生成DUMP文件。
(2)-XX:HeapDumpPath=存储文件/目录 表示生成DUMP文件的路径 默认就在bin下面
用jmap命令
Java5:jmap -heap:format=b <pid>
Java6:jmap -dump:format=b,file=/data/tmp/HeapDump.bin <pid>
或
jmap -dump:live,format=b,file=/data/tmp/HeapDump.bin <pid>
其中live的意思是只保留存活的对象。否则所有对象(包括已经被gc的对象)都会被输出,这在线上环境heap比较大,运行时间比较长的情况线下,会导致heap过大,没有必要
分享到:
相关推荐
- **直接内存(Direct Memory)**:不在JVM内存区内,通过`java.nio.ByteBuffer.allocateDirect()`方式分配内存。 ##### 2. HotSpot运行时数据区域关系图 HotSpot虚拟机是Sun Microsystems开发的一款高性能的JVM实现...
- **容量限制**:直接缓冲区的大小受限于JVM参数`-XX:MaxDirectMemorySize`,超出该限制可能导致异常。 7. **Java NIO中的缓冲区操作**: 缓冲区提供了如`put()`、`get()`、`flip()`、`clear()`、`rewind()`等...
在面试中,JVM和多线程是常见的话题,尤其对于Java开发者来说,理解这两部分至关重要。 1. **JVM内存模型**: JVM内存模型主要包括以下几个区域:堆内存(Heap)、栈内存(Stack)、方法区(Method Area)、程序...
**1.1.2 JVM参数与调优** - **JVM参数详解** - `-Xms`: 设置初始堆大小 - `-Xmx`: 设置最大堆大小 - `-XX:NewRatio`: 设置老年代与新生代的比例 - `-XX:+UseParallelGC`: 使用并行GC收集器 - 更多参数参考官方...
- **直接内存(Direct Memory)**:不受JVM管理,由`java.nio.ByteBuffer`分配。直接内存的大小通过`-XX:MaxDirectMemorySize`参数指定。 #### 类加载过程 类加载是指将类的.class文件中的二进制数据读入到内存中,...
- **直接内存(Direct Memory)**:不是JVM运行时数据区的一部分,但在某些场景下会被频繁使用,比如通过ByteBuffer的allocateDirect方法分配的内存。 #### 堆内存划分与回收 堆内存通常被划分为几个部分,包括...
这两种缓冲区的区别在于它们如何与底层操作系统交互以及内存的分配方式。 1. **直接缓冲区**: 直接缓冲区是在Java虚拟机外部,直接在物理内存中分配空间的。这种方式避免了Java heap与操作系统之间的数据复制,...
- **Direct Buffer Memory**:直接内存不足,可能与`ByteBuffer.allocateDirect()`的使用有关。 - **Unable to create new native thread**:堆外内存不足,线程创建失败。 6. **垃圾回收算法**:除了前面提到的...
- **JVM(Java Virtual Machine)**: Java虚拟机是执行Java字节码的虚拟机,它提供了运行Java程序所需的环境。 **1.2 线程** - **线程**: 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程...
**JVM**是Java运行环境的核心部分,它为Java程序提供了一个抽象的计算机,使得Java程序可以在不同的操作系统上运行。 ##### 线程 Java中的线程是操作系统的一个调度单位,Java通过线程实现了任务的并行执行。Java...
Heap Buffer存储在Java堆中,而Direct Buffer存储在系统内存中,直接与硬件交互,减少了Java虚拟机(JVM)的内存拷贝,提高了性能。然而,Direct Buffer可能会占用更多的系统资源,因此在选择时需要权衡性能和资源...
- **ByteBuf:**Netty提供了一种更高效的缓冲区管理机制,称为ByteBuf,它比Java自带的ByteBuffer更加高效且灵活。 - **对象复用:**Netty允许在一定条件下重用对象,减少垃圾回收的压力。 - **内存泄漏检测:**...
- **Direct Buffer和Heap Buffer**:Netty支持直接内存和堆内存,直接内存避免了JVM和操作系统之间的数据拷贝,提高性能。 - **FileRegion**:用于传输文件,实现零拷贝,减少了内存与磁盘之间的数据复制。 5. **...