摘要: msdn介绍的比较详细:http://msdn.microsoft.com/zh-cn/library/6x16t2tx.aspx索引器 (indexer)索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以使得像数组那样对对象使用下标。它提供了通过索引方式方便地访问类的数据信息的方法。1.C#中的类成员可以是任意类型,包括数组和集合。 当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。2.索引器类型表示该索引器使用哪一类型的索引来存取数组或集合元素,可以是整数,可以是字符串;3.this表示操作本对象的数组 阅读全文
posted @ 2013-08-02 10:20 Jackvin 阅读(557) 评论(0) 推荐(0) 编辑

参考:1.JVM Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5

         2.《深入理解Java虚拟机》

      刚开始看JVM Specification ,说实话由于专业英语不过关,有些关键词总是看不懂意思,后来参考.《深入理解Java虚拟机》方能感悟到JVM的强大。 我们就先从运行时数据区域开始

 

一.运行时数据区域分配图

   The Java Virtual Machine defines various  run-time data areas that are used during execution of a program. Some  of these data areas are created on Java Virtual Machine start-up and are destroyed  only when the Java Virtual Machine exits. Other data areas are per thread. Per-thread   data areas are created when a thread is created and destroyed when the               thread exits.

     JVM在执行程序时定义了多个运行时数据区域,一部分数据区域随   JVM  的创建而创建, 随  JVM  的退出而销毁

                                                                 其他的数据区域随单个线程的创建而创建,随单个线程的退出而销毁

 网上对于JVM中运行时数据区域的有很多版本,但大多都有点瑕疵,上图是我画的,用不同的颜色表明内存区域存在的位子和形成的时间点。 注:块的大小不存在任何含义
 随单个线程创建的有: 1.PC Register 2.Native Method Area 3.JVM Stack
 随JVM创建就创建的有:1.Heap 2.Method Area 3.Constant Pool(其实Method Area 中包含Constant Pool,只不过他是特殊的一块,所有也给他一个特写)
 

 

二.各数据块介绍

  2.1 跟随JVM的数据区域

     2.1.1 Heap

                

    <1>JVM的Heap区域是对于所有Thread 都是共享的

    <2>Heap 是类的对象和数据分配内存的地方

    <3>Heap JVM  的创建而创建, 随  JVM  的退出而销毁

    <4>Heap存储对象的存储空间由自动存储管理系统GC来释放,并且对象从来都不是显示的释放。

    <5>JVM没有固定的自动内存管理系统,一般根据系统的设计需求采用适合的内存管理系统

    <6>Heap 的内存大小可以是固定的 也可以根据需求变化

    <7>存放Heap的内存块可以是不连续的

    <8>如果根据计算,自动内存管理系统不能提供更多的内存给Heap,JVM将抛出outOFMemoryError

 

2.1.1 Method Area

        

           <1>JVM的Method Area 区域是对于所有Thread 都是共享的

    <2>Method Area 类似于:存放传统语言编译后的代码的内存区域 或者  运行系统过程中的文本区域  (第一个例子要好理解点)

       它存放单个类的结构如:运行时常量池,字段,方法数据,构造方法和普通方法的代码,同样包括在类中使用的实例、接口初始化的特殊方法。

    <3>Method Area 随JVM  的创建而创建, 随  JVM  的退出而销毁

    <4>Heap逻辑上是Heap的一部分,但GC并不会对他产生任何影响

    <5>暂无针对编译后的代码管理的策略和内存分配方法。

    <6>Heap 的内存大小可以是固定的 也可以根据需求变化

    <7>存放Heap的内存块可以是不连续的

    <8>如果方法区不能满足内存分配请求,JVM将抛出outOFMemoryError

 

    

 

 

 

 
posted @ 2015-05-11 23:12 Jackvin 阅读(850) 评论(0) 推荐(0) 编辑
摘要: record save here first[root@hadoop .ssh]# ssh-keygen -t rsa -P ''Generating public/private rsa key pair.Enter file in which to save the key (/root/.ss... 阅读全文
posted @ 2015-03-11 23:10 Jackvin 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 1.can not use ifconfighttp://blog.csdn.net/zjt289198457/article/details/6918644 add this : export PATH=$PATH:/sbinc at the end of file /etc/profile an... 阅读全文
posted @ 2015-03-10 00:05 Jackvin 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 存在使i > j || i Float.NaN || Double.NaN <=Float.NaN){ System.out.println("yes"); } else{ System.out.println("no"); }输出:no说明存在!那么Double.NaN 和Float... 阅读全文
posted @ 2014-05-21 11:05 Jackvin 阅读(1343) 评论(0) 推荐(0) 编辑
摘要: 由于机器是win64位的,下载的64的connector安装测试成功,但是在powerdesigner中测试连不上,总算在下面这边博友中找到解决方案!http://blog.csdn.net/webrobot/article/details/9216753这里有常用的功能http://www.cnb... 阅读全文
posted @ 2014-05-07 23:47 Jackvin 阅读(276) 评论(0) 推荐(0) 编辑
摘要: “看看竹子的结吧,它以一定得间距支撑着竹子往上伸展,生活中如果没有规律的冥想,就像是节的芦苇,随时都会倒塌” 回校第三天,今晚陪同学去图书馆,走走当年的时光。在本闲书上看到这句话,感概良多。规律 冥想 阅读全文
posted @ 2014-04-29 23:54 Jackvin 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 1.Required(在编译时检查作用,不会给你注入)This annotation simply indicates that the affected bean property must be populated at configuration time也就是说:需要注入的类在配置的就得配置好,Required只是检查需要注入的类又没有注入,没有就会出错例如配置文件这样: 需要注入一个参数-->这时如果你要是这样启动服务:就会报错 @Required //检查是否注入 public void setUserDAO( UserDAO userDAO) { this.u... 阅读全文
posted @ 2013-12-29 15:51 Jackvin 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 在上篇博客中讨论到java的静态代理, 就是通过组合的方法,前提是委托类需要实现一个接口,代理类也实现这个这个 接口,从何组合两个类,让代理类给委托类添加功能!知道java的静态代理,我们又遇到一个问题,我们又遇到一个问题,是不是每个类要添加功能,都得重新写个类呢!怎么才能实现同样的代码,可以在其他类都能起作用!这就是java动态代理的内容,在java中通Proxy类好AnnotationHandler接口来实现动态代理,我先尝试自己写一个自己的动态代理!一.实现简单的自定义动态代(没考虑参数,接口)只能称之为 伪java动态代理1、接口:public interface ICommonInt 阅读全文
posted @ 2013-12-28 21:40 Jackvin 阅读(1091) 评论(0) 推荐(0) 编辑
摘要: 我们来看看这个问题:在已经实现的功能上如何再添加其他功能?如在一个类中有一个addUser方法,我们如何再实现这个逻辑之前加上其他逻辑!实例代码://空的接口类public interface Father { //nothing}//需要添加逻辑的源代码public class UnChangeableClass implements Father { public void addUser() { //在下面代码之前添加其他逻辑 System.out.println("add user success"); }}方法一: (硬编码实现)我们可以在这个类中直接添... 阅读全文
posted @ 2013-12-28 21:29 Jackvin 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 经过一天的补习,学习文件加载,java反射,JDom等知识,到了晚上终于能够搭出一个基于配置文件的简单spring框架实现!首先我们先看看这个问题:下面是两副图左边是项目结构图,右边是UML图: 正常情况下我们会按照上图一行一行的写代码:其中UserService的代码是这样的public class UserService { //实现dao层的一个实例对象 private UserDAO userDAO=new UserDAOImpl(); //userDAO的setter和getter public UserDAO getUserDao... 阅读全文
posted @ 2013-12-27 00:08 Jackvin 阅读(1766) 评论(0) 推荐(1) 编辑
点击右上角即可分享
微信分享提示