Java入门之学习随记(三)

这篇具有很好参考价值的文章主要介绍了Java入门之学习随记(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 栈内存和堆内存

堆内存:存放"引用数据类型的数据"和"new出来的对象",注意-创建出来的对象只包含各自的成员变量,不包括成员方法.

栈内存:存放"基本数据类型的数据","引用数据类型的变量名"以及"对象的引用",但是引用数据类型和对象实际存放在堆中.

public class Demo {
	String username;
	public void method() {
        int i=1;
		System.out.println("执行类方法");
	}
	public static void main(String[] args) {
		int i=1;
		String str="hello java";
		Demo demo=new Demo();
		demo.username="123";
		demo.method();
		
	}
 
}

运行图中的代码

1.这是一个Demo类,编译后会生成Demo.class文件,放在常量池中

2.main方法是程序的主入口,栈中会生成对应的方法栈帧

3.执行第一行代码int i = 1, 因为int是基本数据类型,会在栈中给i=1分配空间

4.执行String,它为引用数据类型,会先到常量池中找是否有该值,如果没有会将该值放在常量池中,并在栈中创建str变量,指向常量池中对应的值

5.创建Demo对象,在栈中存入Demo对象,同时指向堆中对应的对象属性

6.给demo的成员属性赋值,先到堆中的常量池看是否存在"123",如果没有则存入,堆中的demo对象username属性指向该值

7.调用demo的method方法,会在栈中再生成method的方法栈桢,根据栈的先进后出的原则,会先将该栈帧中的内容执行完,method执行完后,方法帧没有线程后,也会出栈

8.main方法执行完毕,出栈,线程结束,栈中没有方法帧,进程结束

Java入门之学习随记(三)

二. 线程与进程

1. 进程:进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程.进程是正在执行的程序的实例 

进程特点:a.进程是动态的,程序是静态的.

               b.是操作系统进行资源调度和分配的独立单位

               c.每个进程都有独立的地址空间,包括代码区,数据区,堆栈区,而且每个进程的地址空间彼此都是相对独立的,隔离且互不影响

2.线程:是针对进程的优化而得来的,系统调度进程所要花费的资源开销比较大,进程内部被设计成多个执行路径,也就是线程,他们共享进程的资源,系统在调度线程的时候所要花费的资源开销就小得多

线程的特点:a.可以是进程本身,也可以被包含-一个进程至少包含一个线程

                   b.一个进程内的线程会分享该进程的资源,每个线程又都有自己的运行栈和程序计数器

                   c.一个进程崩溃掉以后,在保护模式下不会影响到其他进程;但是一个进程中的一个线程崩掉,有可能会带着整个进程崩掉.所以多进程要比多线程健壮

三. jvm虚拟机

我们编写好的程序代码,通过编译器生成.class字节码文件后,在不同的操作系统中,通过对应的解释器将字节码文件解释给系统执行,不同的操作系统都有对应的jvm版本,所以才会有编译一次到处执行的Java

1.Java程序开始运行的时候,它才运行,程序结束的时候它就停止.

2.一个Java程序会开启一个jvm进程

3.jvm中的线程分为两种-普通线程,保护线程

守护线程是jvm自己使用的线程,比如垃圾回收

普通线程一般是Java程序的线程,只要JVM中还有普通线程,就不会结束

4.jvm如何结束生命周期-a.System.exit()方法.b.程序正常执行结束.c.秩序执行过程中遇到了错误而终止进程.d.由于操作系统出现错误而导致Java虚拟机进程终止文章来源地址https://www.toymoban.com/news/detail-478579.html

到了这里,关于Java入门之学习随记(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 四种引用类型(强引用、软引用、弱引用、虚引用)

    在 Java 中,基本类型和引用类型是两种不同的数据类型 基本类型直接表示数值、字符或布尔值,直接将值存储在内存,包括 byte、short、int 、long、float 、double、char、boolean 引用类似 C 语言中的指针,在内存中存储的是对象的引用而不是对象本身,通过这个引用可以操作对象

    2024年02月05日
    浏览(53)
  • Java 四大引用类型

    GC 回收的优先级上 : 强引用 - 软引用 - 弱引用 - 虚引用 当内存不足, JVM 开始进行 gc 时,对于强引用的对象不会进行回收,即使出现了 OOM 也不会回收。因此,强引用是造成内存泄露的主要原因。 当进行 GC 时,如果内存还足够,则不进行回收该对象,若内存不够,则回收该

    2024年02月11日
    浏览(40)
  • 存放数据的方式:Java集合框架

    在Java编程中,我们经常需要存储和操作一组相关的数据。下面介绍了目前常见的数据存放方式。 变量: 变量是最简单的数据存放方式,用于保存单个值或对象的引用。例如,可以使用一个 int 类型的变量来保存一个整数值,使用一个 String 类型的变量来保存一个字符串。 对

    2024年02月14日
    浏览(34)
  • 【Java入门】数据类型与变量

    前言 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Java入门篇系列,该专栏主要讲解:什么是java、java的数据类型与变量、运算符、程序的逻辑控制、方法的使用、数组的定义与使、类和对象、继承和

    2024年02月06日
    浏览(42)
  • Java中的各种引用类型以及部分引用的相关例子

    在Java中,引用类型主要有四种,分别是:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。这些类型通常与垃圾回收机制有关,用来描述对象的生命周期和可达性。下面详细介绍每一种引用类型: 强引用 (Strong Reference) 强

    2024年04月13日
    浏览(41)
  • java面经03-虚拟机篇-jvm内存结构&垃圾回收、内存溢出&类加载、引用&悲观锁&HashTable、引用&finalize

    要求 掌握 JVM 内存结构划分 尤其要知道方法区、永久代、元空间的关系 结合一段 java 代码的执行理解内存划分 执行 javac 命令编译源代码为字节码 执行 java 命令 创建 JVM,调用类加载子系统加载 class,将类的信息存入 方法区 创建 main 线程,使用的内存区域是 JVM 虚拟机栈 ,

    2024年02月09日
    浏览(56)
  • MEMORY存储引擎:MEMORY存储引擎是一个新的存储引擎,它的特点是数据全部存放在内存中,速度快,但是安全

    作者:禅与计算机程序设计艺术 MEMORY(Memory Oriented Database)存储引擎,中文名“内存式数据库”,是一种新型的存储引擎,其设计目标是能够在内存中快速访问和处理海量数据。该存储引擎是基于键值对存储的,其中值可以是任意类型的数据,包括字符串、整数、浮点数等。

    2024年02月04日
    浏览(45)
  • 【C#学习笔记】引用类型(1)

    引用类型的变量存储对其数据(对象)的引用,而值类型的变量直接包含其数据。 对于引用类型,两种变量可引用同一对象;因此,对一个变量执行的操作会影响另一个变量所引用的对象。 对于值类型,每个变量都具有其自己的数据副本,对一个变量执行的操作不会影响另

    2024年02月14日
    浏览(48)
  • 【C#学习笔记】引用类型(2)

    支持 .NET 类层次结构中的所有类,并为派生类提供低级别服务。 这是所有 .NET 类的最终基类;它是类型层次结构的根。 简单来说,它是万能的,它是所有类型的父类。因为.NET 中的所有类都派生自 Object,因此 Object 类中定义的每个方法都可用于系统中的所有对象。 在 Object

    2024年02月14日
    浏览(48)
  • java 中都有哪些引用类型?

    Java中 默认声明的就是强引用 ,比如: 只要 强引用存在,垃圾回收器将永远不会回收被引用的对象 。如果 想被回收 ,可以将对象置为 null ; 在内存足够的时候,软引用不会被回收,只有在内存不足时,系统才会回收软引用对象,如果回收了软引用对象之后仍然没有足够的

    2023年04月26日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包