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

网站增加聊天营销型网站建设的目的

网站增加聊天,营销型网站建设的目的,网站后台编辑器不能用,网络推广山东对于java程序员来说#xff0c;并不必显示地对内存进行管理#xff0c;一切都交给java虚拟机去做吧#xff0c;而且#xff0c;你也不一定做得比java虚拟机来得专业。好像所有内存管理都交给虚拟机去做就万事大吉了#xff0c;但是#xff0c;事实有时并非如此#xff0…  对于java程序员来说并不必显示地对内存进行管理一切都交给java虚拟机去做吧而且你也不一定做得比java虚拟机来得专业。好像所有内存管理都交给虚拟机去做就万事大吉了但是事实有时并非如此可能有时你会遇到一些让你困惑的问题如OutOfMemoryError异常如stackOverflowError,你开始大呼虚拟机不是都为我们管理好内存了吗怎么还会出现这样的Error,其实当你真正去了解java虚拟机内存区域的分布的时候你就会不自觉的大呼原来java虚拟机也不是万能。 这是从网上找到的一个java运行时数据区域主要包括了方法区(Method Area)java栈区(java stack)本地方法栈区(native method)堆(heap)和程序计数器(program counter register)其中和java垃圾回收器打交道最多的就是堆了下面我们就它们的作用分别简述一下 在这之前首先要介绍一下什么是本地方法   1.程序计数器(Program Counter Register)   每一个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令对于非Native方法这个区域记录的是正在执行的VM原语的地址如果正在执行的是Natvie方法这个区域则为空(undefined)。此内存区域是唯一一个在VM Spec中没有规定任何OutOfMemoryError情况的区域。 2.Java虚拟机栈(Java Virtual Machine Stacks)   与程序计数器一样VM栈的生命周期也是与线程相同。VM栈描述的是Java方法调用的内存模型每个方法被执行的时候都会同时创建一个帧(Frame)用于存储局部变量表、操作栈、动态链接、方法出入口等信息。每一个方法的调用至完成就意味着一个帧在VM栈中的入栈至出栈的过程。      局部变量表存放了编译期间就可知的基本数据类型(boolean byte ing char ****)、对象引用等在编译期间内存空间是已经分配好的当进入一个方法需要在这其中分配多大的内存是已经完全确定的在方法运行期间局部变量表是不可改变的。 3.本地方法栈(Native Method Stacks)   本地方法栈与VM栈所发挥作用是类似的只不过VM栈为虚拟机运行VM原语服务而本地方法栈是为虚拟机使用到的Native方法服务。它的实现的语言、方式与结构并没有强制规定甚至有的虚拟机(譬如Sun Hotspot虚拟机)直接就把本地方法栈和VM栈合二为一。和VM栈一样这个区域也会抛出StackOverflowError和OutOfMemoryError异常。 4、Java堆   对于绝大多数应用来说Java堆是虚拟机管理最大的一块内存。Java堆是被所有线程共享的在虚拟机启动时创建。Java堆的唯一目的就是存放对象实例绝大部分的对象实例都在这里分配。这一点在VM Spec中的描述是所有的实例以及数组都在堆上分配(原文The heap is the runtime data area from which memory for all class instances and arrays is allocated)但是在逃逸分析和标量替换优化技术出现后VM Spec的描述就显得并不那么准确了。   Java堆内还有更细致的划分新生代、老年代再细致一点的eden、from survivor、to survivor,甚至更细粒度的本地线程分配缓冲(TLAB)等无论对Java堆如何划分目的都是为了更好的回收内存或者更快的分配内存。   根据VM Spec的要求Java堆可以处于物理上不连续的内存空间它逻辑上是连续的即可就像我们的磁盘空间一样。实现时可以选择实现成固定大小的也可以是可扩展的不过当前所有商业的虚拟机都是按照可扩展来实现的(通过-Xmx和-Xms控制)。如果在堆中无法分配内存并且堆也无法再扩展时将会抛出OutOfMemoryError异常。上次我们做一个项目的时候刚开始部署到服务器上的时候总是出现OutOfMemoryError异常后来发现原来jdk1.6默认的堆空间最大是64M,后来我们通过把最大堆值设置大了解决了这个问题当然最大堆值不是越大越好java中允许直接内存进行堆外分配如果你把堆值设置太大了那么当剩下的机器内存不足以直接内存的那部分程序使用的话也会抛出OutOfMemoryError的异常。 5.方法区(Method Area)   方法区中存放了每个Class的结构信息包括常量池、字段描述、方法描述等等。VM Space描述中对这个区域的限制非常宽松除了和Java堆一样不需要连续的内存也可以选择固定大小或者可扩展外甚至可以选择不实现垃圾收集。相对来说垃圾收集行为在这个区域是相对比较少发生的但并不是某些描述那样永久代不会发生GC(至少对当前主流的商业JVM实现来说是如此)这里的GC主要是对常量池的回收和对类的卸载虽然回收的“成绩”一般也比较差强人意尤其是类卸载条件相当苛刻 6.运行时常量池(Runtime Constant Pool)   Class文件中除了有类的版本、字段、方法、接口等描述等信息外还有一项信息是常量表(constant_pool table)用于存放编译期已可知的常量这部分内容将在类加载后进入方法区(永久代)存放。但是Java语言并不要求常量一定只有编译期预置入Class的常量表的内容才能进入方法区常量池运行期间也可将新内容放入常量池(最典型的String.intern()方法)。   运行时常量池是方法区的一部分自然受到方法区内存的限制当常量池无法在申请到内存时会抛出OutOfMemoryError异常。 7.本机直接内存(Direct Memory)   直接内存并不是虚拟机运行时数据区的一部分它根本就是本机内存而不是VM直接管理的区域。但是这部分内存也会导致OutOfMemoryError异常出现因此我们放到这里一起描述。   在JDK1.4中新加入了NIO类引入一种基于渠道与缓冲区的I/O方式它可以通过本机Native函数库直接分配本机内存然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显着提高性能因为避免了在Java对和本机堆中来回复制数据。   显然本机直接内存的分配不会受到Java堆大小的限制但是即然是内存那肯定还是要受到本机物理内存(包括SWAP区或者Windows虚拟内存)的限制的一般服务器管理员配置JVM参数时会根据实际内存设置-Xmx等参数信息但经常忽略掉直接内存使得各个内存区域总和大于物理内存限制(包括物理的和操作系统级的限制)而导致动态扩展时出现OutOfMemoryError异常。转载于:https://www.cnblogs.com/plxx/p/3712770.html
http://www.huolong8.cn/news/266664/

相关文章:

  • 博罗建设银行网站平台公司和项目公司的区别
  • 嘉兴建设公司网站深圳网站设计与制作
  • 网站建设管理员工工资多少做百度手机网站快
  • 怎么查询网站的设计公司名称山东建设银行招聘网站
  • wordpress 制作手机站腾讯云 部署wordpress
  • 怎么在雅虎做网站收入精美ppt模板免费下载百度云
  • 开发东莞网站制作公司百度信息流广告代理
  • 做网站分辨率设置多少新闻发布会的流程
  • 网站怎么做图片栏目wordpress同标题关键字
  • 上海网站报价网站制作做网站
  • 汽车4s网站设计做外贸是不是要有网站
  • 视频网站搭建源码网站logo设计教程
  • 张家口市住房和城乡建设局网站郑州seo关键词推广
  • 上海网站建设觉策动力软件工程师证书有哪些
  • 怀化做网站的公司网站开发完没人运营
  • 莱芜网站优化有哪些谷歌云做网站服务器
  • 网页设计与制作课程定位沈阳网站建设seo优化
  • 上海建科建设监理网站网站文案技巧
  • 中国城市建设网站遵义网站建设哪家好?
  • 医院网站建设的规划wordpress手机全部显示图片
  • 济南卓远网站建设关于网站开发的文章
  • 深圳网站建设服务公司阿里云9元做网站
  • 昆明企业网站制作东莞招标网官网
  • 淘宝营销网站建设成都网站seo费用
  • 电信的网做的网站移动网打不开该找电信还是移动企业网站系统有哪些
  • pc网站做成移动网站东营网站seo外包
  • wordpress新增站点滕州盛扬网站建设推广
  • cn体育门户网站源码网站平台建设需要多少钱
  • python 做办公网站添加网站绑定主机名
  • 帮做简历哪个网站好cms系统源码