第二章:本机直接内存异常

DirectMemory容量可以同-XX:MaxDirectMemorySize指定,如果不指定,默认为Java堆最大值相同。

可以同通过反射获得Unsafe实例进行内存分配进行抛出异常。虽然可以使用DirectMemory分配内存也可以抛出内存异常,但是它抛出异常时并没有真正向操作系统申请分配内存,而是通过计算得知内存无法分配,于是手动抛出异常,真正申请分配内存的方法时unsafe.allocateMemory().

public class Test1 {

private static final int _1M = 1024 * 1024;

public static void main(final String[] args) {

Field field = Unsafe.class.getDeclaredFields()[0];

field.setAccessible(true);

Unsafe unsafe = (Unsafe) field.get(null);

unsafe.allocateMemory(_1M)

}

}

DirectMemory导致的内存溢出,一个明显的特征是在Heap Dump文件中不会看到明显的异常。如果发现OOM之后Dump文件很小,而程序中又直接或者间接使用了Nio,那就可以考虑检测一下是不是这方面的原因了。

原文地址:https://www.cnblogs.com/use-D/p/10618765.html

时间: 2024-08-12 08:36:23

第二章:本机直接内存异常的相关文章

第二章:Java堆内存溢出

Java堆溢出 可以通过不停的创建对象来造成堆内存溢出 public static void main(String[] args) { List list = new ArrayList<>(); while(true) { list.add(new ObjectBIg()) } } 使用-XX:+HeapDumpOnOutOfMemoryError可以在虚拟机在出现内存溢出异常时Dump出当前的内存堆转存储快照以便后续进行分析. 对Dump快照进行分析,需要区分出到底是内存泄漏Memory

《深入理解Java虚拟机》读书笔记---第二章 Java内存区域与内存溢出异常

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来.这一章就是给大家介绍Java虚拟机内存的各个区域,讲解这些区域的作用,服务对象以及其中可能产生的问题. 1.运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 1.1程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型中里,字

第二章 3-OutOfMemoryError异常实战

概述 在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其它几个运行区域都有发生OOM异常的可能,下面我们模拟几个异常发生的场景. Java堆溢出 Java堆用于存储对象实例,只要不断的创建对象,并且把保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆的容量限制后就会产生内存溢出异常. 使用-Xmx5m -Xms5m -XX:+HeapDumpOnOutOfMemoryError参数来快速达到溢出效果,并在发生内存溢出时,让虚拟机Dum

JVM【第九回】:【OutOfMemoryError异常之本机直接内存溢出】

DirectMemory容量可通过-XX:MaxDirectMemorySize指定,如果不指定,则默认与Java堆的最大值(-Xmx指定)一样.代码中越过了DirectByteBuffer类,直接通过反射获取Unsafe实例并进行内存分配(Unsafe类的getUnsafe()方法限制了只有引导类加载器才会返回实例,也就是设计者希望只有rt.jar中的类才能使用Unsafe的功能).因为,虽然使用DirectByteBuffer分配内存也会抛出内存溢出异常,但它抛出异常时并没有真正向操作系统申

【深入理解Linux内核】《第二章 内存寻址》笔记 (2014-06-28 12:38)

2.1 内存地址 逻辑地址:段+偏移 线性地址(虚拟地址) 物理地址 2.2硬件中的分段 2.2.1 段选择符和段寄存器 15                                                3  2  1   0 ------------------------------------------------|                                                    |TI |RPL  ||         索引号 

高可用高性能负载均衡软件HAproxy详解指南-第二章(配置文件、关键字、ACL)

第二章:HAproxy配置文件详解以及HAproxy的ACL详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 上一篇:第一章:HAproxy简介及安装配置 目录 haproxy 配置文件详解 haproxy 配置文件中的关键字参考 haproxy的ACL 附:一份完整的HAproxy的配置文件 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.

操作系统概论 第二章

第二章 进程管理 输入一批数据 处理数据 打印处理结果 程序的顺序执行特点 顺序性 封闭性 可再现性 程序的并行执行 间断性 失去封闭性 不可再现性 程序并发执行 同一个程序在不同数据集合上的执行 不同的程序在不同数据集合上的执行 程序 具有独立功能的一组指令的集合 进程 允许并发执行的程序在某个数据集合上的运行过程 进程是由正文段 用户数据段及进程控制块共同组成的执行环境 正文段 存放被执行的机器指令 用户数据段 存放用户数据 进程控制块 存放进程的运行环境 进程 1. 并发性 并发性是进程和

操作系统原理 第一章第二章复习

操作系统复习 第一章 操作系统概述 基本概念 吞吐量:单位时间内系统能处理的工作量. 进程:正在动态执行的程序 实时操作系系统:实时计算.计算的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这个结果的时间一类的计算. 操作系统的特征:现代操作系统大多支持多任务,具有并发.共享.虚拟.异步的特征. 单道批处理系统 特性:自动性.顺序性.单道性. 作业独占CPU和内存. 多道批处理系统 特性: 多道性.无序性.调度性.复杂性. 优点:提高CPU的利用率.提高内存和I/O设备的利用率.增加系统吞吐量

深入浅出Zabbix 3.0 -- 第二章 Zabbix Web操作与定义

第二章  Zabbix Web操作与定义 本章介绍Zabbix 中一些基本概念的定义和web前端页面的操作,包括Zabbix中使用的一些术语的定义,Web页面中用户管理.主机和主机组的管理,以及监控项.模板.触发器.告警的管理和操作,还有Graphs.Screens.Maps及Reports等.通过本章的学习掌握一些基本概念并能够通过Web页面的操作完成对Zabbix的管理. 2.1 定义 hosts(主机) Zabbix中需要监控的服务器.交换机及其他设备我们都统一称作host,这些设备与Za