<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ShadowfaxGHH]]></title><description><![CDATA[You have no choice but to fight.]]></description><link>https://blog.youkuaiyun.com/ShadowfaxGHH</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ShadowfaxGHH]]></copyright><item><title><![CDATA[NDK[2]Java方法到C方法 和 C方法到Java方法]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985305</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985305</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:30:38 +0800</pubDate><description><![CDATA[【参考链接】 程序运行时，以主线程的main()方法为入口，不停的从一个方法调用到另一个方法中，方法返回再继续调用其他的根据之前JVM的知识，其实就是在不停向栈中压入栈帧、弹出栈帧所以既可以在java方法中调用C/C++方法，也可以在C/C++方法中调用Java方法，只不过这两种栈是分开维护的。 Java方法到C/C++方法给一个类定义一个native方法，实现其对应的C/C++方法，在Java中...]]></description><category></category></item><item><title><![CDATA[NDK[1]ndk、ADT、AndroidStudio]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985185</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985185</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:28:08 +0800</pubDate><description><![CDATA[【参考链接】向您的项目添加 C 和 C++ 代码https://developer.android.com/studio/projects/add-native-code.htmlAndroidStudio 2.2 CMAKE 高效NDK开发http://m.blog.youkuaiyun.com/l_215851356/article/details/74691147AndroidStudio进行 JNI ...]]></description><category></category></item><item><title><![CDATA[NDK[0]jni]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985078</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985078</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:22:57 +0800</pubDate><description><![CDATA[【参考链接】Windows下使用Java Jni调用C/C++初探http://blog.youkuaiyun.com/pxhero2012/article/details/52926082 JNI的作用是在Java代码中调用C/C++代码编写的动态库。在Windows系统上，C/C++动态库的格式是.dll，在Linux/Android等系统上，C/C++动态库的格式是.so。本文以Windows系统下的J...]]></description><category></category></item><item><title><![CDATA[[1]System.gc()]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985032</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985032</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:15:21 +0800</pubDate><description><![CDATA[ System.gc()会触发FullGC，回收新生代、老年代。（还有方法区）以如下代码为例 Java Code 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22    //-Xms16M -Xmx16M -Xmn8m -XX:SurvivorRatio=2 -XX:+PrintHeapAtG...]]></description><category></category></item><item><title><![CDATA[[0]Runtime.memory()]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985006</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79985006</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:14:17 +0800</pubDate><description><![CDATA[ 可以使用Runtime来获取到当前程序内存空间的状态如下代码所示 Java Code 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30    //-Xms16M -Xmx20M -Xmn8m -XX:SurvivorRatio=...]]></description><category></category></item><item><title><![CDATA[虚拟机启动参数]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984903</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984903</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:12:54 +0800</pubDate><description><![CDATA[启动Java虚拟机时，可以为其设置启动参数在命令行中，通过如下方式来设置java[-options] classfile在Eclipse中，通过如下方式来设置（新建或运行一次以后再设置）此外从上面还可以看出还可以设置传递给main()方法的参数，这里不再赘述。  常用的参数如下加载-Xbootclasspath/a:D:/temp、-Xbootclasspath/p:D:/temp将D:/temp...]]></description><category></category></item><item><title><![CDATA[内存溢出]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984858</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984858</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:08:33 +0800</pubDate><description><![CDATA[【参考链接】内存溢出http://wiki.jikexueyuan.com/project/java-vm/storage.html  当某一块内存空间不够用时，就会出现内存溢出前面我们知道，虚拟机的内存空间可以分为方法区、栈、堆没有提供方式来设置整个虚拟机内存的大小对于方法区在Java1.8之前又可称为永久区，可以使用-XX:PermSize和-XX:MaxPermSize来指定在java1.8...]]></description><category></category></item><item><title><![CDATA[堆内存：划分、识别垃圾对象、分配策略和回收时机]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984739</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984739</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 10:05:50 +0800</pubDate><description><![CDATA[【参考链接】Java 垃圾收集机制http://wiki.jikexueyuan.com/project/java-vm/garbage-collection-mechanism.html  划分堆内存划分为新生代和老年代，新生代又分为eden和survivor（伊甸园和幸存者），survivor又分为大小相同的两块from和to。                                 ...]]></description><category></category></item><item><title><![CDATA[对象内存模型[3]线程]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984691</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984691</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 09:59:33 +0800</pubDate><description><![CDATA[【参考链接】 我们在启动线程的时候，也经常使用匿名内部类的方式，那么此时内存的状态是怎样的呢？以如下代码为例  已经加了断点，在Eclipse中启动调试，两个线程都停在了加断点的地方 在main线程中，有main()方法的栈帧，其中有两个局部变量，String[0]类型的args和Test类型的t。 （因为main()方法是静态的，所以没有局部变量this）  在Thread-0线程中，有匿名内部...]]></description><category></category></item><item><title><![CDATA[对象内存模型[2]内部类]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984526</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/79984526</guid><author>ShadowfaxGHH</author><pubDate>Wed, 18 Apr 2018 09:56:25 +0800</pubDate><description><![CDATA[【参考链接】Java内部类详解http://www.cnblogs.com/dolphin0520/p/3811445.html静态内部类和非静态内部类的区别http://www.cnblogs.com/dolphin0520/p/3811445.html为什么Java内部类要设计成静态和非静态两种？https://www.zhihu.com/question/28197253  内部类分为静态内...]]></description><category></category></item><item><title><![CDATA[对象内存模型[1]String]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682515</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682515</guid><author>ShadowfaxGHH</author><pubDate>Fri, 01 Dec 2017 00:00:48 +0800</pubDate><description><![CDATA[【参考链接】
 

一个String对象在堆上占用几个字节
虽然String对象所代表的字符串可能是多种多样的，但是一个String对象在堆内存中所占用的内存空间大小是固定的，这是因为
为了节省内存空间，一个应用程序中，所有的字符串常量都集中、不重复的保存在一个表中，这个表叫做字符串“拘留表”。
一个String类型内部包含如下两个成员变量：
char[],字符数组，本质是个引用，指]]></description><category></category></item><item><title><![CDATA[对象内存模型[0]]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682507</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682507</guid><author>ShadowfaxGHH</author><pubDate>Thu, 30 Nov 2017 23:59:19 +0800</pubDate><description><![CDATA[【参考链接】
java对象的内存布局http://blog.youkuaiyun.com/aitangyong/article/details/46416667
一个Java对象到底占用多大内存？http://www.cnblogs.com/magialmoon/p/3757767.html
 
 
前面在描述内存状态变化时，堆内存只是简单的以一个方块来代替
那实际上堆内存是怎样的呢？
 
本]]></description><category></category></item><item><title><![CDATA[栈内存状态变化概述]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682503</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682503</guid><author>ShadowfaxGHH</author><pubDate>Thu, 30 Nov 2017 23:57:39 +0800</pubDate><description><![CDATA[【参考链接】
实例分析Java代码运行时内存布局http://blog.youkuaiyun.com/wangyy130/article/details/52100907
运行时数据区http://blog.youkuaiyun.com/u012440687/article/details/52021393
 
1、栈帧的顺序画反了
2、这里都是通过参数进行数据传递，主要是在操作局部变量表，如果通过对象的成员变]]></description><category></category></item><item><title><![CDATA[字节码指令]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682484</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78682484</guid><author>ShadowfaxGHH</author><pubDate>Thu, 30 Nov 2017 23:55:04 +0800</pubDate><description><![CDATA[下面会指令族的概念，先说明一下





前缀x取值


含义




i


int




b


byte




c


char




s


short




l


long




f


float




d


double




]]></description><category></category></item><item><title><![CDATA[class文件结构[5] 局部变量表的槽位复用及其对垃圾回收的影响]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400628</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400628</guid><author>ShadowfaxGHH</author><pubDate>Tue, 31 Oct 2017 10:35:04 +0800</pubDate><description><![CDATA[long、double类型在局部变量表中需要占用2个槽位
其他类型如int、引用类型需要占用1个槽位
 
非static的成员方法的第一个局部变量都是this引用
 
以上一节的例子为例





一共占用5个槽位，其中
D（double）类型的arg1占用2
槽位，其余各占用1个槽位。
 
局部变量表中的槽位是可以复用的
如果一个局部变量过了其作用范围，那么在其作]]></description><category></category></item><item><title><![CDATA[class文件结构[4]]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400493</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400493</guid><author>ShadowfaxGHH</author><pubDate>Tue, 31 Oct 2017 10:25:20 +0800</pubDate><description><![CDATA[【参考链接】
深入理解Java Class文件格式（三）http://blog.youkuaiyun.com/zhangjg_blog/article/details/21557357
深入理解Java Class文件格式（四）http://blog.youkuaiyun.com/zhangjg_blog/article/details/21658415
深入理解Java Class文件格式（五）http://bl]]></description><category></category></item><item><title><![CDATA[class文件结构[3] 常量池]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400351</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400351</guid><author>ShadowfaxGHH</author><pubDate>Tue, 31 Oct 2017 10:16:09 +0800</pubDate><description><![CDATA[【参考链接】
《Java虚拟机原理图解》 1.2、class文件中的常量池http://blog.youkuaiyun.com/luanlouis/article/details/40148053
《Java虚拟机原理图解》
1.2.2、Class文件中的常量池详解（上）http://blog.youkuaiyun.com/luanlouis/article/details/39960815
《Java虚拟机原理]]></description><category></category></item><item><title><![CDATA[class文件结构[2] static final、static、final、普通类型成员变量的赋初值]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400247</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400247</guid><author>ShadowfaxGHH</author><pubDate>Tue, 31 Oct 2017 10:07:59 +0800</pubDate><description><![CDATA[不考虑作用域修饰符，成员变量的类型有：
static final 类型、仅static类型、仅final类型、普通类型
并且，我们在定义成员变量的时候，还可以通过=赋初值。（其中包含final时强制要求赋初值）
那么，这些赋值操作都是在哪个阶段完成的呢？
 
按照执行的先后顺序
1.        对于staticfinal类型成员变量，会在class文件的Fields中增加Const]]></description><category></category></item><item><title><![CDATA[class文件结构[1] 编译前预处理]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400166</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400166</guid><author>ShadowfaxGHH</author><pubDate>Tue, 31 Oct 2017 10:02:16 +0800</pubDate><description><![CDATA[1.      
如果一个类没有显式继承自Object，则会自动为其加上继承自Object
以如下代码为例
 Java Code 






1
2
3
4




 

package com.test.a;

public class Test {
}




 


 
2.      
在创建一个对象时，必须先创建他的父对]]></description><category></category></item><item><title><![CDATA[class文件结构[0]]]></title><link>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400127</link><guid>https://blog.youkuaiyun.com/ShadowfaxGHH/article/details/78400127</guid><author>ShadowfaxGHH</author><pubDate>Tue, 31 Oct 2017 09:59:26 +0800</pubDate><description><![CDATA[.java源代码文件经过编译以后会生成.class字节码文件。
可以使用WinHex直接以十六进制形式查看
也可以使用javap命令和jclasslib软件（注意64位操作系统匹配，和版本不要太低，我使用低版本的时候出现过字节码指令显示错误的问题）
 
后面讲解的时候，不打算详细到具体字节
所以主要通过javap命令和jclasslib软件。这两个方式的展示各有优缺，后续展示常量池的时候]]></description><category></category></item></channel></rss>