文档章节

2,对象与内存控制

7
 761218914
发布于 2015/10/12 10:24
字数 632
阅读 34
收藏 1

由于jvm的垃圾回收机制由一条后台线程完成。如果不考虑内存管理,会出现以下问题:

1,不断分配内存使得系统的内存减少,从而降低程序运行的性能,

2,大量已经分配的内存的回收使得垃圾回收负担加重,降低程序的运行的性能。

Java中的变量:

1,变量可以分为成员变量和局部变量。

        局部变量分为,形参(方法签名中使用的局部变量),方法内的局部变量,代码块内的局部变量。

        类体内定义的变量成为成员变量,如果由static修饰,则称之为静态变量或者类变量。如果没有修饰那么就是非静态变量或者实例变量。

        同一个jvm中,每一个类只有一个class对象,但是可以创建多个java对象,因此类对象只需要创建一次,但是程序需要几个实例,那么实例变量就需要几块内存空间。

例变量的初始化时机:程序会先执行非静态代码块然后再执行构造函数。假如非静态代码块中有对成员函数赋值的操作,那么赋值操作的结果和程序的源码的顺序有关。

public static void main(String[] args) {
  Cat catt=new Cat("kobe");
  System.out.println(catt);
   }
  public static class Cat{
  String name;
  double weight=2.3;
  public Cat(String name){
   System.out.println("执行构造器");
   this.name=name;
  }
  {
   System.out.println("非晶态代码狂");
   weight=2.0;
  }
    public String toString(){
   return name+weight;
  }
   }

非晶态代码狂
执行构造器
kobe2.0

public static void main(String[] args) {

  Cat catt=new Cat("kobe");

  System.out.println(catt);
 }
 public static class Cat{
  String name;
  public Cat(String name){
   System.out.println("执行构造器");
   this.name=name;
  }
  {
   System.out.println("非晶态代码狂");
   weight=2.0;
  }
  double weight=2.3;
  public String toString(){
   return name+weight;
  }  
 }

非晶态代码狂
执行构造器
kobe2.3
 类变量的初始化。1,定义类变量的时候进行初始化。2,静态初始化块中对类变量指定初始值。这两种方式得执行顺序和它在源代码中的执行顺序相同。

关于父类构造器;

创建任何java对象得时候,总是先依次调用每个父类的非静态初始化块,父类构造器(总是从object开始),最后才调用本类的非静态代码块。

(this()和super()只能在构造器中使用,而且他们都必须作为构造器的第一行代码)

 

© 著作权归作者所有

共有 人打赏支持
7
粉丝 5
博文 133
码字总数 47263
作品 0
南昌
程序员
OC内存管理常见的面试题

#####面试:说一说对内存管理的理解?(原理) - 手动内存管理(MRC):1.在创建一个对象的时候系统会自动创建这个对象的引用计数并赋值为1;2.当引用计数为0的时候,对象会去调用dealloc方法来...

鹿微微鹿
2016/03/25
275
0
jvm性能调优都做了什么

jvm调优的目的: 1、控制GC的行为,GC是一个后台处理,但他也会消耗系统资源,因此经常根据系统运行的程序特性来改变GC行为 2、控制JVM堆栈大小:一般来说,JVM在内存分配上不需要你改,但是...

small达达
2016/03/09
243
0
03 - Object-C内存管理

1、基本原理 1.1、 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回...

口十耳
2015/12/29
18
0
jvm中堆栈以及内存区域分配

JVM内存组成结构 JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧...

毛爷爷夸我帅
2015/09/30
104
0
结构型模式:Proxy 代理模式

结构型模式:Proxy 代理模式 1、直接与间接 1)从们对于复杂的软件系统常常有一种处理方法,即增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。 A 直接:A对象直接使...

flyhighly
2011/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

崩溃bug日志总结1

目录介绍 1.1 java.lang.UnsatisfiedLinkError找不到so库异常 1.2 java.lang.IllegalStateException非法状态异常 1.3 android.content.res.Resources$NotFoundException 1.4 java.lang.Ille......

潇湘剑雨
57分钟前
0
0
学习大数据为什么要先学Java?

计算机编程语言有很多,目前用的多一点的就是Java,C++,Python等等。目前大多数学习大数据的人都是选择学习Java,那Java到底好在哪呢?为什么学大数据之前要先学Java呢?我们今天就来分析一...

董黎明
今天
1
0
php删除服务器所有session

php删除服务器所有session踢掉所有在线用户linux 注意:如果要删除服务器上所有session,重启php服务是解决不了问题的,php的session是持久化的。 有效解决办法: 删除 /tmp 下的所有文件(默...

妖尾巴
今天
0
0
Ubuntu18.04 安装最新版WPS

1.手动卸载libreoffice:sudo apt-get remove --purge libreoffice* 2.官网下载WPS和字体: WPS:http://wps-community.org/download.html 字体:http://wps-community.org/download.html?vl......

AI_SKI
今天
4
0
数据结构(算法)-图(深度优先搜索 DFS)

#include <iostream>using namespace std;#define MaxVex 30typedef char VertexType;typedef struct vexNode adjList[MaxVex];struct edgeNode{int adjvex;//邻接点......

ashuo
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部