精华内容
下载资源
问答
  • 内存老报错
    2021-05-05 04:53:33

    ORA-04030: out of process memory when trying to allocate 88 bytes

    ORA-04030:尝试分配88字节时进程内存不足(以下信息为转载整理,仅供参考)

    根据异常信息,可以很容易的判断是由于内存使用过多,分配不足所致的。此时需要考虑是本身内存不足还是其他原因。

    若本身内存很大,出现内存不足的可能性很低。需要考虑oracle在分配内存的时候是有限制的,超出此限制则产生此错误。

    max_sga_size指的是可动态分配的最大值﹐而sga_target是当前已分配的最大sga。

    max_sga_size是不可以动态修改的﹐而sga_target是可动态修改﹐直到max_sga_size的值(前提是你设定的max_sga_size>sga_target的情況)

    如果在实例启动时﹐max_sga_size < sga_target或max_sga_size没设定﹐则启动后max_sga_size的值会等于sga_target的

    https://blog.csdn.net/lixiaoer757/article/details/80594266 转载

    故障原因是由于数据库监听是通过 crs 进行启动,所以继承了 root 用户的 ulimit 限制,在 root 的 ulimit 限制中 data(kbytes) 的限制为 131072kb,即每个通过监听连接的进程能分配的内存资源不能超过 131072kb,所以在通过 PLSQL Developer 工具连接数据库(需要通过 Oracle 的监听建立连接)创建索引时,该操作申请的内存资源达到该限定时就会报 ORA-04030 的错误

    1)是否有足够的可用内存

    2)是否设置了oracle限制

    PGA 设置的大小为 8400M,根据单个会话使用 PGA 的期望尺寸(也可以认为是实际分配的最大尺寸)计算公式是:min(5%pga_aggregate_target,50%_pga_max_size,_smm_max_size),可以简单计算下 min(5%*8400M,50%1680M,840M)=420M(其中_pga_max_size 的单位为 bytes,_smm_max_size 的单位为 kb),即单个会话能使用 PGA 的期望尺寸为 420M,那报错的会话是否超过了该限制。

    检测办法:查看trace文件

    3)哪个进程需要的内存过多

    检测办法:查看trace文件

    4)是否设置了操作系统的限制

    查看操作系统限制,oracle用户限制

    产生原因:(PLSQL Developer 是通过监听程序建立的进程连接;sqlplus 是在数据库服务器上直接创建创建的连接,绕过了监听程序建立的进程)

    避免方法:

    1)在安装 Oracle 软件创建数据库之前应该对主机层面的内核参数、limit 限制等进行规范的修改,以避免类似问题的发生。

    2)配置合理的内存,例如物理内存和交换空间

    3)使用自动 PGA 内存管理可降低 ORA-04030 错误的概率

    今天使用LogMiner找回误更新的数据时,查询v$logmnr_contents时,遇到了“ORA-04030: out of process memory when trying to allocate 152 bytes (Logminer LCR c,krvtadc)”错误。查了一下My Oracle Support,发现出现ORA-04030错误的原因,特摘录在此。

    如果指定了COMMITTED_DATA_ONLY选项而且发出了查询,则LogMiner会在内存中的单个事务中逐步处理所有的重做记录, 直到 logminer 找到该事务的提交记录。 因此,可能会耗尽内存,在这种情况下将出现“Out of Memory”错误

    ORA-04030: out of process memory when trying to allocate 152 bytes (Logminer LCR c,krvtadc)

    APPLIES TO:

    Oracle Database - Enterprise Edition - Version 10.2.0.4 to 12.1.0.1 [Release 10.2 to 12.1]

    Information in this document applies to any platform.

    This problem can occur on any platform.

    SYMPTOMS

    Select against logminer fails with ORA-4030 (Logminer LCR c,krvtadc).

    Following query failed:

    SELECT username, TO_CHAR(timestamp,'HH24:MI:SS'), substr(sql_redo,1,110)

    FROM v$logmnr_contents

    WHERE seg_owner=''

    AND seg_name IN ('');

    FROM v$logmnr_contents where

    ERROR at line 2:

    ORA-4030: out of process memory when trying to allocate 56 bytes (Logminer LCR c,krvtadc)

    CAUSE

    According to the documentation in Oracle® Database Utilities:

    If the COMMITTED_DATA_ONLY option is specified and you issue a query, LogMiner stages all redo records within a single transaction in memory until LogMiner finds the commit record for that transaction. Therefore, it is possible to exhaust memory, in which case an "Out of Memory" error will be returned.

    EXECUTE DBMS_LOGMNR.ADD_LOGFILE (logfilename => '',

    options => DBMS_LOGMNR.NEW);

    EXECUTE sys.DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => '',

    options =>dbms_logmnr.committed_data_only);

    SOLUTION

    If this occurs, you must restart LogMiner without the COMMITTED_DATA_ONLY option specified and reissue the query.

    REFERENCES

    https://www.cnblogs.com/kerrycode/p/10206255.html 转载

    来自为知笔记(Wiz)

    标签:04030,max,sga,报错,内存,Oracle,ORA,size

    来源: https://www.cnblogs.com/plutozzl/p/13143749.html

    更多相关内容
  • 日前服务器一个应用总是莫名挂掉,通过排查发现是年代内存无法回收引起,那么要定位到到底是那一部分数据导致的无法回收,就需要把堆内存dump出来,然后用工具分析。但奇怪的是dump的时候一直报错 Unable to open...

    背景

    日前服务器一个应用总是莫名挂掉,通过排查发现是老年代内存无法回收引起,那么要定位到到底是那一部分数据导致的无法回收,就需要把堆内存dump出来,然后用工具分析。但奇怪的是dump的时候一直报错

    Unable to open socket file: target process not responding or HotSpot VM not lo

    排查完整过程

    解决方案

    网上找了很多方案,都没效果,最终通过一些文章的启示,自己找到了解决方案。

    问题引起的原因

    由于Linux一切皆文件的特性,也就是说一个Java进程实际上会对应到一个PID文件,dump命令依赖于进程的PID文件,报错这个是由于这个PID文件可能已经被系统给删除了。

    linux系统有个删除管理机制:系统每天会用tmpwatch命令检查并删除 /tmp 下超过240小时未访问过的文件和目录。

    问题的解决方案

    Linux有个文件(/usr/lib/tmpfiles.d/tmp.conf)中记录着一些目录,这些目录中不会被自动删除,我们需要在这个文件中配置我们的JAVA进程的PID目录。

    第一步:先找到PID所在目录
    先用JPS命令得到进程号
    在这里插入图片描述
    32383为我的JAVA应用的进程号,然后我们去/tmp目录下找这个进程号
    在这里插入图片描述
    很明显这里没有32383,但这里有个hsperfdata_root目录不知道是什么东西,进去看看
    在这里插入图片描述
    这里有31383,那么也就是说/tmp/hsperfdata_root目录即是要排除在外的目录。

    第二步:把找到的目录添加到文件内容中

    vi /usr/lib/tmpfiles.d/tmp.conf
    

    添加如下内容
    在这里插入图片描述
    /*代表目录下的所有文件,添加之后应该是立即生效的,无需重启。如此,即可避免文件被系统删掉。

    其他事项

    以上解决方案是我在我的系统中亲测成功的方案,由于系统版本不同,我的解决办法可能不适用于你,你需要尝试。
    我的Linux内核版本为Linux version 3.10.0-1062.1.1.el7.x86_64
    系统版本为CentOS Linux release 7.5.1804
    我不确定其他系统版本的设置方式是否一致,有的系统可能没有/usr/lib/tmpfiles.d/tmp.conf这个文件,那么可以看看是否存在/etc/cron.daily/tmpwatch这个文件,存在的话可以在这个文件中添加排除项,添加方式与本文一致。

    如果依然无法解决,可以看看我参考的两篇文章,寻找解决方案。

    参考

    https://www.cnblogs.com/vsop/p/10943753.html
    https://blog.51cto.com/zhangshaoxiong/1310166

    展开全文
  • 电脑老是显示内存不足怎么办

    千次阅读 2021-07-27 08:06:19
    关于电脑老是显示内存不足这个问题,可能还有些网友对于不太了解,下面就由学习啦小编给你们介绍电脑老是显示内存不足的解决方法吧,希望能帮到大家哦!电脑老是显示内存不足的解决方法一:在软件安装好以后,首先...

    关于电脑老是显示内存不足这个问题,可能还有些网友对于不太了解,下面就由学习啦小编给你们介绍电脑老是显示内存不足的解决方法吧,希望能帮到大家哦!

    电脑老是显示内存不足的解决方法一:

    在软件安装好以后,首先可以看到的就是电脑的CPU、内存及空闲物理内存情况。

    可以通过以下方法来解决:

    1.软件内存整理

    可以通过“快速整理”和“全面整理”进行释放电脑的内存资源,而在“进程管理”中,可以看到与“Windows任务管理器”效果一样的进程管理界面。

    2.进程管理界面

    在“启动程序”中,可以看到电脑启动时的运行程序,其中包括“当前用户”、“所有用户”和“注册表用户”,对于影响电脑启动速度的软件可以有效的控制。

    3.启动程序界面

    “Windows内存整理”的另一个特色就是在“性能优化”中可以通过“一键优化”简单完成系统的全面优化,绝对的“傻瓜式”操作。

    4.性能优化界面

    选择系统优化。

    5 自动优化项目

    最后,在“设置”中,可以根据自己机器的实际情况设置适合的操作参数方便随时优化系统。

    电脑老是显示内存不足的解决方法二:

    最快的方法就是释放已用的内存,一是把其它正在使用的程序或浏览器关闭,二是使用360加速球应用清理系统内存和垃圾,并且关闭用不上的服务。

    提高电脑的虚拟内存,提高虚拟内存可以让更多的程序在虚拟内存中运行,保证内存足够的大小。设置虚拟内存方法是,选择我的电脑,右键查看属性,点击高级设置性能选项。

    c2e69dc98577382e8863bc482567a3c1.png

    在性能选项选择高级,点击更改虚拟内存选项,设置虚拟内存放置的硬盘分区,放C盘是最好的。接着设置初始值和最大值,初始值可以设置为物理内存的1.5倍,最大值可以设置为内存的3倍。

    4e9566fe0ebc420b227c2477d8d00738.png

    给电脑添加物理内存条,物理内存的高低才是解决内存不足的根本,可以购买一条两G左右的内存,插入电脑的主板内存插槽上即可。

    53c67bf75d51fd872dcda637d5c41746.png

    看过“电脑老是显示内存不足怎么办”的人还看了:

    展开全文
  • OpenGL获取报错信息

    2022-06-20 15:55:03
    1283 GL_STACK_OVERFLOW 堆栈溢出 1284 GL_STACK_UNDERFLOW 堆栈下溢(出栈操作达到堆栈底部) 1285 GL_OUT_OF_MEMORY 内存溢出,OpenGL此后的行为将是未定义的 1286 GL_INVALID_FRAMEBUFFER_OPERATION 使用未准备...

    在学习OpenGL的过程中,往往因为某些测试目的或单纯太菜而写出错误的代码,此时只能面对漆黑的窗口怀疑人生。如何让OpenGL能够像编译器一样,在出错时打印错误信息到控制台呢?本文将介绍几种方法。

    基础介绍

    首先声明OpenGL的API库:glfw。这个库支持较新的glfw版本(如gl4),让我们可以使用更新的OpenGL特性。现目前glfw官网可以下载的版本是3.3,注意这是glfw的版本,而不是开发环境所使用的OpenGL版本。

    通过#include <GLFW/glfw3.h>包含glfw头文件之后,我们就可以使用GLFW API 的所有常量、类型和函数原型。其中一部分是通过包含开发环境自身提供的OpenGL头文件实现的,但是Windows平台对OpenGL支持很少(大概是因为微软自己做了DirectX的原因),因此简单地包含glfw3.h只能让我们直接使用古老的OpenGL 1.2版本,新版本函数需要手动查询并绑定函数指针后才能使用,为了解决这一问题,一般使用extension loader library,如glad库来支持这些扩展。

    OpenGL获取错误

    OpenGL运行中产生的错误保存在一个队列中,调用函数

    GLenum glGetError(void);
    

    从队列中获取一个代表错误的枚举数,对应error的类型,种类如下

    枚举值枚举名描述
    0GL_NO_ERROR错误队列为空,当前未记录任何错误
    1280GL_INVALID_ENUM使用非法的枚举参数
    1281GL_INVALID_VALUE参数越界(out of range)
    1282GL_INVALID_OPERATION当前状态下不允许执行此操作。
    1283GL_STACK_OVERFLOW堆栈溢出
    1284GL_STACK_UNDERFLOW堆栈下溢(出栈操作达到堆栈底部)
    1285GL_OUT_OF_MEMORY内存溢出,OpenGL此后的行为将是未定义的
    1286GL_INVALID_FRAMEBUFFER_OPERATION使用未准备好的帧缓存
    1287GL_CONTEXT_LOST由于显卡重置导致 OpenGL 上下文丢失。

    由于错误可能会累积,或是在某个调用中产生多种错误,因此一般用while()反复调用以获取全部错误。

    以下是一个简单的Debug头文件,包含该头文件后,在某一行中调用checkGLError()函数,即可确定该行之前产生了哪些错误。

    在多处使用时,这个函数可以接收一个字符串参数,来标记不同错误的位置。

    #pragma once
    #include <iostream>
    #include <string>
    #include <map>
    
    #include <GLFW/glfw3.h>
    
    std::map<int, std::string> ErrorInfo{
        {0, "NO_ERROR"},
        {1280, "GL_INVALID_ENUM"},
        {1281, "GL_INVALID_VALUE"},
        {1282, "GL_INVALID_OPERATION"},
        {1283, "GL_STACK_OVERFLOW"},
        {1284, "GL_STACK_UNDERFLOW"},
        {1285, "GL_OUT_OF_MEMORY"},
        {1286, "GL_INVALID_FRAMEBUFFER_OPERATION"},
        {1287, "GL_CONTEXT_LOST"}
    };
    
    void checkGLError(const std::string& flag = "NO_FLAG") {
        int code = glGetError();
        
        if (code != GL_NO_ERROR) {
            if (flag != "NO_FLAG") {
                std::cout << "OpenGL ERROR at flag \"" << flag << "\"\n";
            }
    
            while (code != GL_NO_ERROR) {
                std::cerr << "ERROR CODE \"" << code << "\": " << ErrorInfo[code] << std::endl;
                code = glGetError();
            }
        }
    }
    
    

    (或许)更好的一种方式是在每个OpenGL函数调用时都套上一个检测错误的宏,尽管这样做会降低运行效率,但在程序的Debug阶段是很有效的,具体做法见Cherno的OpenGL教程 p10

    新版本OpenGL支持的错误回调

    设置错误回调后,即可在发生错误时自动处理,十分方便。

    • 注意:要使用错误回调需要包含较新(4.3版本以后)的glad库。
      使用glad官网的在线服务下载新版本glad

    错误回调的原型如下

    void glDebugMessageCallback(	DEBUGPROC , callback
    								void * userParam);
    
    • callback是一个在出错时将被调用的函数的函数指针。
    • userParam是用户传入的,将对应传入callback函数的指针。

    glfw获取错误

    • 注意:glfw所返回的错误是带有glfw前缀的函数所产生的错误,即glfw库运行时产生的错误,它们不会引起程序崩溃。只要glfw成功初始化,它都会保持安全地运行。

    方法1

    使用函数

    int glfwGetError(const char ** description)
    

    用法可参加这段代码

    const char* description;
    int code = glfwGetError(&description);
     
    if (description) {
        // print code and description
    }
    
    • 错误代码指示错误的常规类别。如果自上次调用以来未发生任何错误,则返回GLFW_NO_ERROR(0)。

    • 注意,指针的内存由glfw自己管理,直接传入空指针即可,也不需要释放指针。

    方法2

    类似于OpenGL自己的回调函数,glfw也可以设置回调函数,每次发生错误时都会调用该回调。同样是定义一个特定原型的回调函数,并传入glfwSetErrorCallback即可。

    void error_callback(int code, const char* description) {
    	// print code and description
    }
    
    glfwSetErrorCallback(error_callback);
    

    参考资料

    GLFW: Introduction to the API
    glGetError_PersonFly_小逗的博客-CSDN博客
    GLFW:Getting started
    glDebugMessageCallback - OpenGL 4 - docs.gl

    展开全文
  • 找不到宏定义 注: (1)原因是因为宏定义的名称可能与固件库函数中的名称冲突,不会报错,也可以正常运行。 (2)为了调试方便,区别于固件库原有的名称定义,推荐将宏定义名称修改为加个下划线 (3) 5.函数隐式声明 注...
  • 使用threshold函数进行OTSU阈值分割时系统报错如下![图片说明](https://img-ask.csdn.net/upload/201911/08/1573144519_612700.png) 其中,h是HSV图分割通道后得到的H通道。 但是点击这 ![图片说明]...
  • Vbox安装oracle-linux报错:VT-x features locked or unavailable in M1.安装完Vbox后,通过vbox来安装oracle-linux时报“VT-x features locked or unavailable in MSR”: 2.报错原因:CPU没有开启虚拟化支持 ......
  • C语言报错大全

    2021-05-23 06:47:47
    C语言错误代码及错误信息错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: ...
  • 一.Command line is too long报错 在wordspace.xml中找到下面代码. <component name="PropertiesComponent"> <property name="WebServerToolWindowFactoryState" value="false" /> <property name=...
  • 1、可能是python安装根目录磁盘虚拟内存不足,应增大虚拟内存,虚拟内存默认为C盘的2GB。 2、可能是对应磁盘空间不足,需清理磁盘空间。 3、如使用win10系统,Datalodar可能出现问题,应尝试将num_workers设小一点,...
  • 启动时加入参数-Xms200M -Xmx200M -XX:+UseParallelGC -XX:+PrintGC -XX:+HeapDumpOnOutOfMemoryError,这段代码运行后,过了一段时间会频繁Full GC(回收年代垃圾),最后会导致OOM异常:Exception in thread ...
  • 执行到MATLAB函数时软件会报错:Precision Design.exe 中的 0x758f812f 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0e79f60c 处的 mwException。 并且在MATLAB函数处中断 我用的方法是dll文件混合编程的,...
  • 下面内容翻译自tomcat内存溢出的错误文件。 可能引起的原因: 1.系统的物理RAM或交换空间不足; 2. 在32位JAVA模式下,达到了进程大小限制。 可能的解决方案: 1. 减少系统上的内存负载; 2. 增加物理内存或...
  • 谷粒商城最全报错笔记

    千次阅读 2022-07-20 17:17:55
    P135 调试的时候发心跳包,改下日志配置属性就好了。 logging: level: com.atguigu.gulimall: debug  com.alibaba.nacos.client.naming: WARN  com.alibaba.nacos.client.config.impl: WARN p136 关于左侧三...
  • 启动mysql服务器报错

    2021-01-19 07:55:10
    62616964757a686964616fe4b893e5b19e31333365646234拿到一台服务器,安装完mysql后进行启动,启动错误如下:有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存。这明显提示无法分配内存嘛。如果真是...
  • Mybatis 传入List类型参数,报错:There is no getter for property named '__frch_item_0' inselect a.*,b.UNIT_NAME linkUnitName from T_SYSE_MAINT...js点击事件报错 not a function好几次用js点击事件,...
  • 运行报错 debug不报错?事务导致时序性大问题! 今天在测试自己还未上线的代码时,突然发现了重大问题程序直接运行结果不符合预期,但是 debug的结果却是复合预期的! 问题表现 进行数据变更操作的时,正常运行查出旧...
  • Vue项目运行内存溢出(errno 134)
  • 报错情况1: 报错情况2: 解决: 2、jstat 3、JVM 堆内存内部结构 一、Heap Dump是什么? Heap Dump 是Java进程在某个时间点上的内存快照。通常在写heap dump文件前会触发一次FullGC,所以heap dump文件中...
  • 网络组同学回复说是我们探测服务所在机房的交换机旧,存在未知的转发瓶颈,正在优化,这让我更放心了,于是在部门群里简单交待一下,算是完成任务。 问题爆发 本以为这次值班就起这么一个小波浪,结果在晚上八点多...
  • 堆外内存 (Off-heap Memory) 统一内存管理机制堆外内存模型如图: 相比堆内内存,堆外内存只区分 Execution 内存和 Storage 内存: (1)存储内存 (Storage Memory) 内存占比为 maxOffHeapMemory * spark.memory....
  • Mugen主程序报错汇总

    千次阅读 2021-05-12 06:27:37
    原文来自11区民间整合的Mugen主程序报错汇总,同时加入了千寻网站平时收集的常见报错,源地址:http://mugenbinran.web.fc2.com/error.html以下皆为机翻,有空会慢慢修正翻译加载初始场景报错报错关键字:dojo.def ...
  • 在该策略下,Heap内存被划分成新区域(Nursery)、区域(Tenured)。所有对象创建后都被分配到Nursery区域,之后如果该对象一直标记为可用,则会被自动到Tenured区域。 图3 J9 VM 默认堆空间内存模型 更进一步,...
  • 发生这些现象基本上就是新买的内存条有问题. 如果不确定的话 可以下载 AIDA64 一个软件. 如果30分钟不出错. 基本上内存条就没什么问题. 其他原因: 排查因为认为超频内存导致的异常现象. tb购买,点击收货后 ...
  • 我现在用C#写一个UDP的程序,而UDP只能收发byte数组,而下位机要求的格式是结构体,因此我用如下代码进行转换,发的时候没有问题,收到的时候把数组转换成结构体就会报错说“访问受保护的内存”,一直解决不了。...
  • JVM内存模型和垃圾回收机制

    千次阅读 2019-06-26 08:00:00
    JVM内存模型 根据Java虚拟机规范,Java数据区域分为五大数据区域。 其中方法区和堆是所有线程共享的,虚拟机栈、本地方法栈和程序计数器则为线程私有的。 有的博客称方法区是永久代,那是因为前者是JVM的规范,...
  • idea启动时报内存不够,oom. 调整idea的vm参数也没有作用
  • 0xc0000001报错解决办法

    千次阅读 2022-05-03 11:50:40
    笔记本、机箱等放置时间过长,开机时可能会报出该故障 1.拆开笔记本或者机箱,进行清灰工作; 2.把内存条拔下,使用酒精棉擦拭,风干后插回; 3.尝试开机即可;
  • 图片内存溢出处理

    千次阅读 2015-02-11 22:02:21
    1.图片内存溢出 默认情况下,每个android程序的dailvik虚拟机的最大堆空间大小为16M 当加载的图片太多或图片过大时经常出现OOM问题 android 中用bitmap 时很容易内存溢出,报如下错误:Java.lang....
  • 3.2.4 在CentOS7中,通过top命令查看堆具体情况,找出占用CPU高的进程的PID 3.2.5 根据上面获取的PID,使用命令 jstat 查看堆内存整体使用情况 3.2.6 通过上面获取的PID, 使用命令 jmap 查看堆内存使用详情 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,404
精华内容 17,361
热门标签
关键字:

内存老报错

友情链接: input.rar