精华内容
下载资源
问答
  • java中全局变量是放在方法区的常量池的,所以会的是共享之意在,当然局部变量是放在栈中的: 1.存储的全部是对象,每个对象都 包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区...

    在堆中的对象是什么呢?

    在java中全局变量是放在方法区的常量池的,所以会有的是共享之意在,当然局部变量是放在栈中的:
    1.存储的全部是对象,每个对象都 包含一个与之对应的class的信息。(class的目的是得到操作指令)
    2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

    首先这里面有一个解释:
    https://www.iteye.com/blog/yangshangchuan-2021423

    	class Text{
    		public static void main(String[] args) {
    			_内存_ n=new _内存_();
    			n.name="faladi";
    			n.price=400;
    			n.type="跑车";
    			n.stop();
    			_内存_ n1=new _内存_();
    			n.name="奥迪";
    			n.price=400;
    			n.type="跑车";
    			n.running();
    		}
    
    	}
    	public class _内存_ {
    	String name;
    	String type;
    	double price;
    	void running() {
    		System.out.println("车会跑");
    	}
    	void stop() {
    		System.out.println("车会刹车");
    	}
    
    }
    

    在Java中对象不能直接来操作只能用引用来进行操作,当我们创建类的时候会自动的调用构造函数进行对我们的属性进行修改。
    在这里插入图片描述
    在平常我们所创建的对象中在堆中创建的是对象的基本类型的数据,大小也主要由创建的基本数据确定,但其中也有指向引用,这个是来指向方法区中的方法的指针,当我们调用一个方法的时候是先在栈中有个地址指向对象,在对象中那个地址中保存着方法区中的方法地址,这样调用方法的。
    在暂存器中在发生子过程跳转的过程中,会有个LR寄存器,记录着跳转之前的下一个指令的地址,当然当跳转的子函数嵌套的调用的时候会有把地址放到栈中进行存储,在最后返回的时候一一返回在最后跳到原来LR寄存器存储的地址中,在接着进行最初原来程序的运行。

    中断中:cpu做了哪些事下面有。

    https://zhidao.baidu.com/question/1512710059563018260.html?qbl=relate_question_5&word=pc%D6%B8%D5%EB%BC%C4%B4%E6%C6%F7%BB%E1%B7%C3%CE%CA%B6%D1%D5%BB%C2%F0%3F

    那一般在JAVA对象中内存占用多大呢?

    https://mp.weixin.qq.com/s?__biz=MzI5MzYzMDAwNw==&mid=2247487570&idx=2&sn=b548f907d355d72e7ddfec1bf943d6e1&chksm=ec6e690adb19e01c86720130b14b4eb066ff4de4592ecf00339487f5381d89d3ac5ed254148d&mpshare=1&scene=23&srcid=&sharer_sharetime=1574131193638&sharer_shareid=4be2d080afe350d69d6ae5ff6f9eec3c#rd

    展开全文
  • 首先我们先来说说jvm内存模型:jvm内存分为:方法区、堆、栈和程序计数器。下面我们来简单的说说方法区、栈和堆:方法区:是各个线程共享的区域,存放类信息/常量/静态变量;栈:其实每个线程都会分配一个栈,其生命...

    2d628bbb02943bea8a15c699c60c2ec0.png

    首先我们先来说说jvm内存模型:

    jvm内存分为:方法区、堆、栈和程序计数器。

    下面我们来简单的说说方法区、栈和堆:

    方法区:是各个线程共享的区域,存放类信息/常量/静态变量;

    栈:其实每个线程都会分配一个栈,其生命周期与线程一样,其执行一个方法就会生成一个栈帧,栈帧包含了方法中的局部变量。

    堆:所有类的实例化都存放在堆里面。

    (视频教程推荐:java视频教程)

    1、从内存的角度分析用静态和非静态的区别

    static修饰成员变量和成员方法,其值存放的地址是方法区的常量池,其执行的顺序为在加载类的时候就将static修饰的变量名或者方法存放到常量池了。

    非静态修饰的变量可以是成员变量和局部变量。

    成员变量随对象存放的地址一样,因为它属于类的一部分,其地址在堆中。

    局部变量一般情况下在方法中声明,其存放的地址在栈中。

    二、从运行的机制分析

    在源码被编译器编译成.class字节码文件的时候,一旦类被加载,用了static修饰的块/变量/方法就会马上存放到方法区,与此同时非静态的块/变量/方法还没有编译,一旦将非静态的变量存放到静态方法里面,程序计数器指示到局部变量的时候就会报错,因为这个时候根本还没有编译到局部变量这一块。

    展开全文
  • 输入/输出和反射IO流常用基类注意:( )里面是子类 如File**类,Buffered**类Buffered**类带缓冲按行读取内容的readLine()方法字节流字节输入流:InputStream (FileInputStream、BufferedInputStream)字节...

    实用类: 由Java API提供的常用类

    学习这部分一定要多看 Java API 。

    输入/输出和反射

    IO流常用基类

    注意:( )里面是子类 如File**类,Buffered**类

    Buffered**类带有缓冲区,有按行读取内容的readLine()方法

    字节流

    字节输入流:InputStream (FileInputStream、BufferedInputStream)

    字节输出流:OutputStream (FileOutputStream、BufferedOutStream)

    字符流

    字符输入流:Reader (FileReader、BufferedReader)

    字符输出流:Writer (FileWriter、BufferedWriter)

    Java反射

    反射:指java程序能自描述和自控制,它允许程序在运行时才加载、探知、使用编译期间完全未知的类

    反射机制:指在运行状态中,动态获取类信息以及动态调用对象方法的功能

    注解

    Java代码里的特殊标记。它为在代码中添加用Java程序无法表达的额外信息提供了一种形式化的方法。注解可以看成修饰符,修饰程序元素。

    注解可以在编译、类加载、运行时被读取。而注释不会被程序所读取。

    线程调度

    多个线程处于可运行状态,线程调度会根据优先级来决定线程进入可运行状态的次序。

    线程的优先级用1~10 表示,10的优先级最高,默认值是5

    网络编程技术

    网络:是信息传输、接收、共享的虚拟平台,把各个点、面、体的信息联系到一起,从而实现资源共享

    网络编程:通过使用套接字来达到进程间通信目的的编程

    XML简介

    XML(Extensibel Markup Language):即可扩展标记语言,是一种简单的数据存储语言,使用一些列简单的标记描述数据。

    特点:与操作系统、开发平台无关;规范统一

    作用:数据交互;配置应用程序和网站;Ajax基石

    展开全文
  • 这应该是一个传统,作为之后的语言,对之前的语言的一种致敬。首先按照程序运行的机制,一个程序的执行必然是由另一个更之前... 单是一点,汇编的代码里面的数据也是分很多种,简单点可以分为两类数据存放,实际...

    这应该是一个传统,作为之后的语言,对之前的语言的一种致敬。

    首先按照程序运行的机制,一个程序的执行必然是由另一个更之前的程序去启动的 最原始的就到了操作系统。

    首先说下汇编的执行。

    汇编的代码 要由与操作系统配合的编译器,连接器进行处理,处理成当前操作系统可以识别的可执行文件,然后在由操作系统将这些数据读到内存中进行执行. 单是有一点,汇编的代码里面的数据也是分很多种,简单点可以分为两类数据存放区,实际执行区. 但是操作系统怎么找到这些东西,并把他们放在合适的地方进行使用。

    在汇编指令里面 我们知道有一部分指令 叫伪指令,这部分指令是给编译器看的,不会进入最终的二进制文件,我们就是用这些指令 将汇编指令 进行处理,处理完后,操作系统就可以知道哪些是存放数据的,哪些是实际运行的(其实就是具体的内存的起始值,放到合适的寄存器里面),这样的话操作系统就可以运行这段处理好的文件了。

    同样的对于c来说,也采用类似的做法,不过对c来说要比汇编高级一点,它声明的是main方法,同样 的在编译连接处理之后,main方法的指针就成为了代码执行的逻辑入口,说到这里就应该明白,所谓的main其实同样是作为一个标记而已,就好比汇编的伪指令,这里一定要写成main方法 是因为编译器默认会去把他作为程序执行的入口,这是约定俗成的一件事,当然你要是有能力 也可以找到编译器的源码,找到这个标记 把他改成你自己的。

    最后说到java,java不仅是main还是static,同样的我们知道jvm是c写的,这个方法叫main而不叫其他也是因为写java这帮人是c的老用户吧。你去看jdk的源码就知道 也是main方法起的。我这里想说下为什么是static。我们知道jvm的内存模型运行时的数据区 有三大块 常量池,堆,栈。常量池存放所有已加载类的元数据(数据表的表名),堆里面存放的是类实例(表记录)。在java里面,static修饰的方法和属性是可以在不需要实例化的时候就可以去访问的,并且我们知道static方法内部只可以使用

    该类static属性,而相对的实例属性 必须要在类实例化以后才可以访问,因为只有在实例化以后,对应的类才可以在堆上有自己可以访问的数据(表里面有了记录,不在是空表),说的在朴实点就是,元数据的所对应的指针不为空(这也是为什么static方法不能访问非static属性的原因,因为指针为空,没有对应的数据)。所以static修饰的方法或者属性,天生自带关联的内存区域,而实例的没有,所以java在启动的时候直接去找对应的内存就可以了,不然还要重新申请内存,初始化。

    所以,

    java的class文件说到底,其实也就是jvm的一堆数据而已 这堆数据比较复杂,有一些繁琐的处理流程

    不只是单纯的数据 还包含过程就好比 lamble之于 集合.lambel中的函数 (专业点叫算子)在集合的stream过程中也只是一个变量 一个参数数据而已,但是它又是一个过程。所谓的函数编程。其实说到根上,也就是把参数的范围扩大了一下,从之前的值或者引用,扩大到了可以包含一个过程,不过为什么不能呢,毕竟我们使用的虚拟机 一直就是这么干的啊,我们只不过是,拓展延伸了一下而已。

    展开全文
  • 1、创建了Customer()实例 和 Account()实例 2、对象头里包括:运行时元数据、类型指针、实例数据、对齐填充 ...② 类型指针:是对方法区中类元信息的引用 ③ 实例数据:真实记录一个对象包含的数据.
  • 3.一个方法的调用和退出就代表这一个栈帧的入栈和出栈,而堆里面的东西只能通过JVM来进行回收,堆里面又分为新生代和老年代,新生代又分为Eden、S0和S1,比例是8:1:1,首先对象会在Eden进行分配内存,因为...
  • 堆 (heap)方法区 (method Area) 虚拟机栈(VM STACK) 本地方法栈(NATIVE method stack) 程序计数器( program count register) (1) 执行引擎 本地方法接口 本地方法库 在这里 我对上面不做一一解释 可查看...
  • 关于桥方法看了很多文章,但是大多都只解释了桥方法的现象,并没有解释为什么方法。所以本文从jvm底层原理阐述,为什么方法。 JVM 底层原理 栈帧 栈帧是用于支持虚拟机进行方法调用和执行的数据结构,它...
  • 当一个方法执行时,每个方法都会建立自己的内存 ...当我们在程序中创建一个对象时,这个对象被保存到运行时数据,以便以后反复使用(因为对象的创建成本通常较大),这个运行时数据就是堆内存 。堆内存...
  • 原标题:Java面试最常见的问题:JVM的内存机制是什么?JVM中的内存分为五个部分:(1)方法区:存储加载的class字节码,通过该区域我们能寻址到类中的方法的入口。除此之外,方法区还包括运行时常量区和静态常量区。这...
  • 喵喵最近经常遇到小数点保留的问题,转载一篇Java里面的几种小数点位数控制方法。...有什么错误请大家在评论指出。 话不多说,上代码: 1 import java.math.BigDecimal; 2 import java.text....
  • 内存模型:(1)程序计数器(2)虚拟机栈(3)本地方法栈(4)堆(5)方法区注意:堆和方法区是线程共享的,其余区域是线程隔离的。栈里面存放的是基本的数据类型和引用,而堆里面则是存放各种对象实例的。垃圾回收机制的算法...
  • JVM中的内存分为五个部分:(1)方法区:存储加载的class字节码,通过该区域...在堆里面不断创建对象但是垃圾回收器不回收,就可能造成OutOfMemoryError错误。这个区域也是线程共享的。(3)虚拟机栈:存储所有被调...
  • 发现servlet实现类里面service方法执行过程中, getOutputStream().write()并不会立即将文件流提交给客户端, 我想可能是服务器内部在执行完service方法之后, 自动对响应进行了提交(而write方法只是将要提交的内容提前...
  • 美团面完了,写个面经,攒攒人品一、一面 1小时40几分钟,基本会的被问完了1.介绍项目,考虑没考虑过服务器挂了怎么办...说说synchronized,发生异常会释放锁吗9.Lock10.JVM内存结构,详细说栈、方法区和堆11.String...
  • 打算还写一篇线程池的就暂时将多线程系列停止了…今天中午在逛简书的时候发现一些大厂也会问Object对象里面有什么方法(也算是一个知识点吧),Object我还没去认真复习过,于是这篇主要看看Object对象有什么要注意的...
  • 前言JAVA中常用的锁其实是有很多的,但是,一般来说我们常见到的可能就是几种下面用一个图来简单表示一下 下面来简单介绍一下一,...先解释一下这三个东西1,对象头这里面有什么东西呢?都是一些隐性的必须品你...
  • 比如说,要知道什么是堆,什么是栈,什么方法区,这数据区域存放什么内容?可以参考这篇文章:栈里面存放方法内容比如说以下代码:public class App {public static void main(String[] args) {sayHello();}private...
  • 目录介绍4.0.0.1 说一下Java IO里面的常见类,字节流,字符流、接口、实现类、方法阻塞?4.0.0.2 什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别?4.0.0.3 字符流和字节流有什么...
  • 认识java

    2017-02-08 14:51:00
    你为什么能访问我的空间?那是因为你手上一台计算机,或者是一部手机。无论是计算机,还是手机,里面都内存,CPU,和硬盘。...栈区里面存放的是变量,变量是什么?他是存放数据运算过程中所需要...
  • Java虚拟机规范中描述:方法区为堆的一个逻辑部分。 但是我们在内存模型构建的时候,就是将堆和方法区分为块区域的。 那么它们分别有什么共同点呢?方法区又存放的是什么数据内容呢? 共同点:有堆内存的...
  • 运行时数据区有方法区、堆、虚拟机栈、本地方法栈、程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 Java虚拟机栈,与程序计数器一样,Java虚拟机栈也是线程私有的...
  • 今天我们来一起认识一下堆与方法区。 关于堆内存,我之前有写过一篇关于堆外内存的博客,里面有详细介绍堆内存。这里为了观看方便,就直接把关于堆内内存的部分拿过来咯。(想了解堆内内存与堆外内存的伙伴们,可以...
  • Java虚拟机的内部构成

    千次阅读 2020-06-05 23:19:26
    由上图我们可以看出,虚拟机的内存区域可以按照是否是线程共享的分为两大块,线程共享的区域有方法区和堆,线程私有的分为虚拟机栈,本地方法栈和程序计数器。下面我们来详细看看这些东西里面都存着什么吧。 方法区 ...
  • jAVA小数点控制

    千次阅读 2018-06-21 19:09:46
    喵喵最近经常遇到小数点保留的问题,转载一篇Java里面的几种小数点位数控制方法。...有什么错误请大家在评论指出。话不多说,上代码: 1 import java.math.BigDecimal; 2 import java.text.DecimalForm...
  • Java跨平台的原因JVM内存模型运行时数据区总览程序计数器java堆(Heap)栈区方法区JVM堆,栈,方法区对应模型❝Java与C++之间一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想...
  • Java与C++之间一堵由内存动态分配和垃圾收集技术所围成的高墙,墙...JVM启动后,整体来看,会把向操作系统申请到的内存空间分成这样几个部分:程序计数器区虚拟机栈本地方法栈堆方法区它们在《Java虚拟机规范》中...
  • Java反射机制

    2018-06-17 12:48:00
     Java中的Class的类是一个特殊的类,JVM加载字节码文件的时候,在方法区中为每一个类创建一个对应的Class类对象,这个对象中包含类的信息:方法,字段,注解等。 是什么 可以在运行时动态的获取类的信息。...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 206
精华内容 82
关键字:

java方法区里面有什么

java 订阅