当前位置: 首页 > news >正文

西安做网站的公司维护软件产品设计流程

西安做网站的公司维护,软件产品设计流程,代运营公司需要什么资质,网站建设进度图Java 与JNI 内存管理是怎样的想要弄清楚Java与JNI的内存管理的关系#xff0c;首先要弄清楚JVM的内存模型JVM内存模型.png其中本地方法栈就是运行时调用native 方法的数据保存区。本地方法栈的大小可以设置成固定的或者是动态扩展。Java中的内存泄露JAVA 编程中的内存泄漏首先要弄清楚JVM的内存模型JVM内存模型.png其中本地方法栈就是运行时调用native 方法的数据保存区。本地方法栈的大小可以设置成固定的或者是动态扩展。Java中的内存泄露JAVA 编程中的内存泄漏从泄漏的内存位置角度可以分为两种JVM 中 Java Heap 的内存泄漏JVM 内存中 native memory 的内存泄漏。Java Heap 的内存泄漏Java 对象存储在 JVM 进程空间中的 Java Heap 中Java Heap 可以在 JVM 运行过程中动态变化。如果 Java 对象越来越多占据 Java Heap 的空间也越来越大JVM 会在运行时扩充 Java Heap 的容量。如果 Java Heap 容量扩充到上限并且在 GC 后仍然没有足够空间分配新的 Java 对象便会抛出 out of memory 异常导致 JVM 进程崩溃。Java Heap 中 out of memory 异常的出现有两种原因①程序过于庞大致使过多 Java 对象的同时存在②程序编写的错误导致 Java Heap 内存泄漏。多种原因可能导致 Java Heap 内存泄漏。JNI 编程错误也可能导致 Java Heap 的内存泄漏。JVM 中 native memory 的内存泄漏JVM 进程空间中Java Heap 以外的内存空间称为 JVM 的 native memory。进程的很多资源都是存储在 JVM 的 native memory 中例如载入的代码映像线程的堆栈线程的管理控制块JVM 的静态数据、全局数据等等。也包括 JNI 程序中 native code 分配到的资源。JNI编程中的内存泄露Native Code 本身的内存泄漏Global Reference 引入的内存泄漏JNI 编程中潜在的内存泄漏特别是LocalReference的使用哪些情况下需要做内存管理native code本身需要做内存管理如使用c/c语言编写需要遵守语言本身的内存管理策略如指针变量的创建于释放不当都可能产生内存泄露进一步导致内存JVM的崩溃。Global Reference的管理而 Global Reference 对 Java 对象的引用一直有效因此它们引用的 Java 对象会一直存在 Java Heap 中。在使用 Global Reference 时需要仔细维护对 Global Reference 的使用。如果一定要使用 Global Reference务必确保在不用的时候删除。就像在 C 语言中调用 malloc() 动态分配一块内存之后调用 free() 释放一样。否则Global Reference 引用的 Java 对象将永远停留在 Java Heap 中造成 Java Heap 的内存泄漏。Local Reference的管理Local Reference管理模型图localReference_Java_map.jpg从这个映射关系表可以看出实际上每当线程从 Java 环境切换到 native code 上下文时(J2N)JVM 会分配一块内存创建一个 Local Reference 表这个表用来存放本次 native method 执行中创建的所有的 Local Reference。每当在 native code 中引用到一个 Java 对象时JVM 就会在这个表中创建一个 Local Reference运行 native method 的线程的堆栈记录着 Local Reference 表的内存位置(指针 p)Local Reference 表中存放 JNI Local Reference实现 Local Reference 到 Java 对象的映射。native method 代码间接访问 Java 对象(java obj1java obj2)。通过指针 p 定位相应的 Local Reference 的位置然后通过相应的 Local Reference 映射到 Java 对象。当 native method 引用一个 Java 对象时会在 Local Reference 表中创建一个新 Local Reference。在 Local Reference 结构中写入内容实现 Local Reference 到 Java 对象的映射。native method 调用 DeleteLocalRef() 释放某个 JNI Local Reference 时首先通过指针 p 定位相应的 Local Reference 在 Local Ref 表中的位置然后从 Local Ref 表中删除该 Local Reference也就取消了对相应 Java 对象的引用(Ref count 减 1)。当越来越多的 Local Reference 被创建这些 Local Reference 会在 Local Ref 表中占据越来越多内存。当 Local Reference 太多以至于 Local Ref 表的空间被用光JVM 会抛出异常从而导致 JVM 的崩溃。Local Reference 不是native code的局部变量区别体现在局部变量存储在线程堆栈中而 Local Reference 存储在 Local Ref 表中。局部变量在函数退栈后被删除而 Local Reference 在调用 DeleteLocalRef() 后才会从 Local Ref 表中删除并且失效或者在整个 Native Method 执行结束后被删除。可以在代码中直接访问局部变量而 Local Reference 的内容无法在代码中直接访问必须通过 JNI function 间接访问。JNI function 实现了对 Local Reference 的间接访问JNI function 的内部实现依赖于具体 JVM。具体关于JNI内存泄露的实例分析可以参考IBM开发者社区的一篇文章在 JNI 编程中避免内存泄漏
http://wiki.neutronadmin.com/news/298050/

相关文章:

  • 广东贸易网站建设投资公司成立条件
  • 温州通业建设工程有限公司网站wordpress缩略图不清晰怎么办
  • 网站建设 58同城小程序发布流程怎么弄
  • 公司做网站应记入哪个会计科目商丘哪里做网站比较好
  • 一个新的网站怎么做优化推广普通话调查问卷
  • 有了域名如何做网站北京工程建设交易信息网站
  • 公司网站建设济南凡科建站容易吗
  • 做网站怎么插音频怎么开通网站
  • 网站设计师工作内容chinaz站长素材
  • 贵州便宜网站推广优化电话深圳工程交易服务网
  • 网站管理功能图网站开发设计进度表
  • wordpress自定义面板百度seo学院
  • 不用wordpress建站安卓手机怎么制作网站
  • 租赁服务器的网站公司网站做一年多少钱
  • 网站ui设计收费汕尾英文网站建设
  • 做网站最简单的wordpress管理网址
  • 什么网站可以做ui小动画途牛电子商务网站建设
  • 服装企业官方网站宁波有哪些公司做网站
  • wap 网站谁做的四虎网站是多少
  • 官方网站怎样做旅游网站开发的需求分析
  • 橱柜网站建设公司汽车是怎么做的视频网站
  • 东莞网站建设php方案网站建设2017排名
  • 头像设计制作网站石家庄做网站最好的公司
  • 能够做外贸的网站有哪些织梦手机网站教程
  • 口碑好的天津网站建设公司介绍简历模板
  • led网站模板危险网站怎么解除
  • 怎么仿做网站海外网络推广平台
  • 南通网站排名优化做药的文献一般在哪些网站查找
  • 广州网站制作怎样asp网站建设下载
  • 柳城网站制作百元便宜建站