当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

JVM调优总结(一)-- 一些概念[Java编程]

赞助商链接



  本文“JVM调优总结(一)-- 一些概念[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

数据范例

Java虚拟机中,数据范例可以分为两类:基本范例和引用范例.基本范例的变量保存原始值,即:他代表的值就是数值本身;而引用范例的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置.

基本范例包含:byte,short,int,long,char,float,double,Boolean,returnAddress

引用范例包含:类范例,接口范例和数组.

堆与栈

堆和栈是程序运行的关键,很有必要把他们的关系说清楚.

栈是运行时的单位,而堆是存储的单位.

栈办理程序的运行问题,即程序若何履行,大概说若何处理数据;堆办理的是数据存储的问题,即数据怎么放、放在哪儿.

在Java中一个线程就会呼应有一个线程栈与之对应,这点很简单理解,因为差别的线程履行逻辑有所差别,因此需求一个独立的线程栈.而堆则是全部线程同享的.栈因为是运行单位,因此里面存储的信息都是跟当前线程(或程序)相关信息的.包含部分变量、程序运行状况、办法返回值等等;而堆只负责存储对象信息.

为什么要把堆和栈辨别出来呢?栈中不是也可以存储数据吗?

第一,从软件计划的角度看,栈代表了处理逻辑,而堆代表了数据.这样脱离,使得处理逻辑更为清楚.分而治之的思惟.这种断绝、模块化的思惟在软件计划的各个方面都有表现.

第二,堆与栈的别离,使得堆中的内容可以被多个栈同享(也可以理解为多个线程拜候同一个对象).这种同享的收益是很多的.一方面这种同享供应了一种有效的数据交互方法(如:同享内存),另一方面,堆中的同享常量和缓存可以被全部栈拜候,节俭了空间.

第三,栈因为运行时的需求,比方保存系统运行的上下文,需求举行地址段的划分.由于栈只能向上增长,因此就会限制住栈存储内容的本领.而堆差别,堆中的对象是可以按照需求动态增长的,因此栈和堆的拆分,使得动态增长成为大概,呼应栈中只需记录堆中的一个地址便可.

第四,面向对象就是堆和栈的完善结合.其实,面向对象方法的程序与从前构造化的程序在履行上没有任何辨别.但是,面向对象的引入,使得对待问题的考虑方法发生了改变,而更接近于自然方法的考虑.当我们把对象拆开,你会发现,对象的属性其实就是数据,存放在堆中;而对象的行为(办法),就是运行逻辑,放在栈中.我们在编写对象的时刻,其实即编写了数据构造,也编写的处理数据的逻辑.不得不承认,面向对象的计划,确切很美.


  以上是“JVM调优总结(一)-- 一些概念[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • JVM调优总结(三)-基本垃圾回收算法
  • JVM调优总结(一)-- 一些概念
  • JVM调优总结(二)-一些概念
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .