浅析java(多方面解读)
昨天我简单的说了一下我的编程学习之路。假设你热爱编程。而不是仅为了赚钱,我想我的经历或许会给你带来一定的启示,假设你还没有看。请先慢慢读完我的编程学习之路,您肯定会有还有一番体会的。。
好了。废话不多说了。进入今天的主题。我想先介绍一下java。重栈和堆的角度还有jvm,假设你不是非常明确。那不要紧。在以后的文章中我还会提到。怎样你学过c和c++,那么你肯定对栈,堆内存理解的比較好。
我曾经写过一篇文章Java是一种什么语言。简单的介绍了一下java,今天这一块我就不多说了。。
我还是那helloworld举例吧。。
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world");
}
}
我想大家对着段代码是再熟悉只是了,今天我就来说一下它的存储。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFya193aw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
变量就不多说了,大家看图一目了然。当new出来一个HelloWorld对象时。它就会存在堆区,先简单的说一下堆和栈吧。
栈与堆都是Java用来在Ram中存放数据的地方。与C++不同。Java自己主动管理栈和堆,程序猿不能直接地设置栈或堆。
Java的堆是一个执行时数据区,类的(对象从中分配空间。
这些对象通过new、newarray、anewarray和 multianewarray等指令建立。它们不须要程序代码来显式的释放。
堆是由垃圾回收来负责的,堆的优势是能够动态地分配内存大小。生存期也不必事 先告诉编译器,由于它是在执行时动态分配内存的,Java的垃圾收集器会自己主动收走这些不再使用的数据。但缺点是,由于要在执行时动态分配内存,存取速度较 慢。
栈的优势是,存取速度比堆要快。仅次于寄存器,栈数据能够共享。
但缺点是。存在栈中的数据大小与生存期必须是确定的。缺乏灵活性。栈中主要存放一 些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
再来说一下载入helloworld的时候吧,我们首先得把原代码编译成字节码。然后有jvm载入到内存并执行得到输出结果。
关于jvm载入类的机理比較复杂。我会在以后的文章中再写的。。
欢迎关注我的微博
,我的微博会实时更新文章。 交流群:
199326422
浅析java(多方面解读)的更多相关文章
- 浅析Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 浅析Java.lang.Process类
一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序). Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的 ...
- 浅析Java中的访问权限控制
浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...
- [转载]浅析Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- 浅析java内存管理机制
内存管理是计算机编程中的一个重要问题,一般来说,内存管理主要包括内存分配和内存回收两个部分.不同的编程语言有不同的内存管理机制,本文在对比C++和Java语言内存管理机制的不同的基础上,浅析java中 ...
- 【转】浅析Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...
- 浅析 java ArrayList
浅析 java ArrayList 简介 容器是java提供的一些列的数据结构,也可以叫语法糖.容器就是用来装在其他类型数据的数据结构. ArrayList是数组列表所以他继承了数组的优缺点.同时他也 ...
- [转帖]浅析java程序的执行过程
浅析java程序的执行过程 转帖来源: https://www.cnblogs.com/wangjiming/p/10315983.html 之前学习过 这一块东西 但是感觉理解的不深刻. copy一 ...
- 浅析java修饰符之public default protected private static final abstract
浅析java修饰符之public default protected private static final abstract 一 修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...
随机推荐
- secureCRT 破解
转自:http://www.cnblogs.com/qingtingzhe/articles/5008902.html
- CCF计算机职业资格认证考试 201809-2 买菜
以下内容过于幼稚,请大佬自觉绕道.. 题目描述: 时间限制:1.0s内存限制:256.0MB问题描述:问题描述 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁 ...
- Linux忘记root密码,密码找回,图片展示
忘记root密码 CentOS 7参考地址如下:https://www.baidu.com/s?wd=CentOS7+%E6%89%BE%E5%9B%9Eroot%E5%AF%86%E7%A0%81& ...
- MongoDB的游标操作
MongoDB的游标操作 制作人:全心全意 游标:查询的返回资源或接口,这个接口可以逐条查询 游标的声明 var cursor = db.collection名.find(); cursor.hasN ...
- Python之文件处理-批量修改md文档内容
目录 Python之文件处理-批量修改md文档内容 Python之文件处理-批量修改md文档内容 #!/usr/bin/env python # -*- coding:utf-8 -*- import ...
- 97-2016年11月1日AUDUSD在公布利率后反手做单感悟(2016.11.2)
2016年11月1日AUDUSD在公布利率后反手做单感悟 11月1日,澳联储公布利率决议,保持利率不变,AUDUSD大涨.我在上面做空认为市场会回调.做空位置是根据多种斐波那契技术找的 ...
- 集训第四周(高效算法设计)G题 (贪心)
G - 贪心 Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Desc ...
- STM32F407 GPIO原理 个人笔记
datasheet(STM32F407ZGT6.pdf)中,IO structure 为FT,表示容忍5V电压 后面的uart1_TX之类,表示端口复用 共有A~G7组IO口, 每组16个IO口:0~ ...
- 易接SDK ios9以上无法弹出充值界面的一种情况
充值需要用到http请求: 打开info.plist, 在app tansport security setting 这个项 , 加入 NSAllowsArbitraryLoads YES
- Leetcode 215.数组中的第k个最大元素
数组中的第k个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 ...