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

网站使用费用深圳属于哪个省

网站使用费用,深圳属于哪个省,免费商用的cms,网站分为哪几类一、Java GC 概念说明Java GC(Garbage Collection#xff0c;垃圾收集#xff0c;垃圾回收)机制#xff0c;是Java与C/C的主要区别之一#xff0c;作为Java开发者#xff0c;一般不需要专门编写内存回收和垃圾清理代码#xff0c;对内存泄露和溢出的问题#xff0c;也不…一、Java GC 概念说明Java GC(Garbage Collection垃圾收集垃圾回收)机制是Java与C/C的主要区别之一作为Java开发者一般不需要专门编写内存回收和垃圾清理代码对内存泄露和溢出的问题也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中存在自动内存管理和垃圾清扫机制。概括地说该机制对JVM(Java Virtual Machine)中的内存进行标记并确定哪些内存需要回收根据一定的回收策略自动的回收内存永不停息(Nerver Stop)的保证JVM中的内存空间防止出现内存泄露和溢出问题。Java GC机制主要完成3件事确定哪些内存需要回收确定什么时候需要执行GC如何执行GC。下面我们将从4个方面学习Java GC机制1内存是如何分配的2如何保证内存不被错误回收(即哪些内存需要回收)3在什么情况下执行GC以及执行GC的方式4如何监控和优化GC机制。二、Java内存区域划分了解Java GC机制必须先清楚在JVM中内存区域的划分。在Java运行时的数据区里由JVM管理的内存区域分为下图几个模块1. 程序计数器(Program Counter Register)程序计数器是一个比较小的内存区域用于指示当前线程所执行的字节码执行到了第几行可以理解为是当前线程的行号指示器。字节码解释器在工作时会通过改变这个计数器的值来取下一条语句指令。每个程序计数器只用来记录一个线程的行号所以它是线程私有(一个线程就有一个程序计数器)的。如果程序执行的是一个Java方法则计数器记录的是正在执行的虚拟机字节码指令地址如果正在执行的是一个本地(native由C语言编写完成)方法则计数器的值为Undefined由于程序计数器只是记录当前指令地址所以不存在内存溢出的情况因此程序计数器也是所有JVM内存区域中唯一一个没有定义OutOfMemoryError的区域。2. Java虚拟机栈(Java Virtual Machine Stacks)一个线程的每个方法在执行的同时都会创建一个栈帧(Statck Frame)栈帧中存储的有局部变量表、操作站、动态链接、方法出口等当方法被调用时栈帧在JVM栈中入栈当方法执行完成时栈帧出栈。局部变量表中存储着方法的相关局部变量包括各种基本数据类型对象的引用返回地址等。在局部变量表中只有long和double类型会占用2个局部变量空间(Slot对于32位机器一个Slot就是32个bit)其它都是1个Slot。需要注意的是局部变量表是在编译时就已经确定好的方法运行所需要分配的空间在栈帧中是完全确定的在方法的生命周期内都不会改变。虚拟机栈中定义了两种异常如果线程调用的栈深度大于虚拟机允许的最大深度则抛出StatckOverFlowError(栈溢出)不过多数Java虚拟机都允许动态扩展虚拟机栈的大小(有少部分是固定长度的)所以线程可以一直申请栈直到内存不足此时会抛出OutOfMemoryError(内存溢出)。每个线程对应着一个虚拟机栈因此虚拟机栈也是线程私有的。3. 本地方法栈(Native Method Stacks)本地方法栈在作用运行机制异常类型等方面都与虚拟机栈相同唯一的区别是虚拟机栈是执行Java方法的而本地方法栈是用来执行native方法的在很多虚拟机中(如Sun的JDK默认的HotSpot虚拟机)会将本地方法栈与虚拟机栈放在一起使用。本地方法栈也是线程私有的。4. 堆区(Heap) (新生代和旧生代)堆区是理解Java GC机制最重要的区域没有之一。在JVM所管理的内存中堆区是最大的一块堆区也是Java GC机制所管理的主要内存区域堆区由所有线程共享在虚拟机启动时创建。堆区的存在是为了存储对象实例原则上讲所有的对象都在堆区上分配内存(不过现代技术里也不是这么绝对的也有栈上直接分配的)。一般的根据Java虚拟机规范规定堆内存需要在逻辑上是连续的(在物理上不需要)在实现时可以是固定大小的也可以是可扩展的目前主流的虚拟机都是可扩展的。如果在执行垃圾回收之后仍没有足够的内存分配也不能再扩展将会抛出OutOfMemoryError:Java heap space异常。5. 方法区(Method Area)(永久代)方法区是各个线程共享的区域用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息包括版本、field、方法、接口等信息)、final常量、静态变量、编译器即时编译的代码等。方法区在物理上也不需要是连续的可以选择固定大小或可扩展大小并且方法区比堆还多了一个限制可以选择是否执行垃圾收集。一般的方法区上执行的垃圾收集是很少的。但这也不代表着在方法区上完全没有垃圾收集其上的垃圾收集主要是针对常量池的内存回收和对已加载类的卸载。在方法区上进行垃圾收集条件苛刻而且相当困难效果也不令人满意所以一般不做太多考虑可以留作以后进一步深入研究时使用。在方法区上定义了OutOfMemoryError:PermGen space异常在内存不足时抛出。6. 新生代、旧生代、永久代虚拟机中共划分为三个代新生代、旧生代、永久代。年轻代和年老代的划分是对垃圾收集影响比较大的。所有新生成的对象首先都是放在新生代的旧生代中存放的都是一些生命周期较长的对象。永久代用于存放静态文件如Java类、方法等。永久代对垃圾回收没有显著影响。三、Java对象的访问方式一个Java的引用访问涉及到3个内存区域JVM栈堆方法区。以最简单的本地变量引用Object obj new Object()为例Object obj表示一个本地引用存储在JVM栈的本地变量表中表示一个reference类型数据new Object()作为实例对象数据存储在堆中堆中还记录了Object类的类型信息(接口、方法、field、对象类型等)的地址这些地址所执行的数据存储在方法区中在Java虚拟机规范中对于通过reference类型引用访问具体对象的方式并未做规定目前主流的实现方式主要有两种1. 通过句柄访问通过句柄访问的实现方式中JVM堆中会专门有一块区域用来作为句柄池存储相关句柄所执行的实例数据地址(包括在堆中地址和在方法区中的地址)。这种实现方法由于用句柄表示地址因此十分稳定。2. 通过直接指针访问通过直接指针访问的方式中reference中存储的就是对象在堆中的实际地址在堆中存储的对象信息中包含了在方法区中的相应类型数据。这种方法最大的优势是速度快在HotSpot虚拟机中用的就是这种方式。四、参考资料1.《JAVA编程思想》第5章2.《Java深度历险》Java垃圾回收机制与引用类型3.《深入理解Java虚拟机JVM高级特效与最佳实现》第2-3章
http://www.yutouwan.com/news/61748/

相关文章:

  • 深圳网站建设哪家口碑好wordpress排序优化
  • 创建网站根目录企业活动网站创意案例
  • 网站开发具体步骤凡科建站做的网站收录慢吗
  • 网站看不到排版怎么办哪个网站可以宣传做的蛋糕
  • 网站开发业务好做吗哪里有制作网站系统
  • 手机网站制作 费怎么做分录郑州seo网络优化公司
  • 做百度移动网站快速教育局网站群建设方案
  • 做淘宝客需要建网站吗seo系统培训
  • 水墨 网站源码网页制作培训多少钱一天
  • 自助建站网站源码wordpress增加登陆注册
  • 电商网站的支付功能出口家具东莞网站建设
  • 温州网站建设外包镇江网页设计公司
  • 电子商务网站 费用对网站建设有什么样意见
  • wordpress布谷鸟主题上海网络营销seo
  • cnzz 网站跳出率查询学做甜品的网站
  • 网站建设的主要内容包括网站优化体验报告
  • 阿里云部署网站教程视频解析接口网站怎么做
  • 网站建设企业模板wordpress带灯箱的主题
  • 计算机应用技术(网站开发)哪个网站能帮助做试卷
  • 网页游戏网站知乎wordpress 透明
  • 个人网站的设计与制作论文上传网站程序后又怎么做
  • 发广告的网站南宁软件优化网站建设
  • 天津网站优化软件律师网站建设推广
  • wordpress全站cdn ssl网站建设的原则有哪些方面
  • 广州建网站的网络公司网站开发费用怎么入账
  • 网站宣传标语郑州自助建站软件
  • 泉州仿站定制模板建站外贸soho网站建设
  • 在一家传媒公司做网站编辑 如何延安网站建设报价
  • 网站建设公司有前途吗网站建设市场前景如何
  • 网站建设接单技巧正泰营销云