oracle启动内存溢出
windows服务器内存8g,oracle初始化参数sga_max_target=5G,sga_target=4G, page_aggregate_target=1G这种启动参数内存溢出 为了使内存得到最大限度的利用,应该如何设置啊?
更新时间:2022-03-20 21:03
最满意答案
调用
GetString
方法需要一个实例。我已经简化了你的代码并将它变成了一个SSCCE :
using System; using System.Reflection.Emit; using System.Text; class GetStringDemo { public static DynamicMethod GetStringForEncoding(Encoding encoding) { var getstringMethod = encoding.GetType().GetMethod("GetString", new Type[] { typeof(byte[]) }); var getStringCreator = new DynamicMethod("foo", typeof(string), new Type[] { typeof(byte[]), encoding.GetType() }, typeof(void)); ILGenerator gen = getStringCreator.GetILGenerator(); gen.Emit(OpCodes.Ldarg_1); // this is the instance for callvirt gen.Emit(OpCodes.Ldarg_0); gen.Emit(OpCodes.Callvirt, getstringMethod); gen.Emit(OpCodes.Box, typeof(string)); gen.Emit(OpCodes.Ret); return getStringCreator; } public static void Main() { var utf8 = Encoding.GetEncoding("utf-8"); var method = GetStringForEncoding(utf8); Console.WriteLine(method.Invoke(null, new object[2] { new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x32, 0x30, 0x31, 0x34, 0x21 }, utf8 } )); } } // Output: Hello 2014!
在调用
h.ldarg_0 //Load array
之前加载实际的调用目标。 在它缺席的情况下,你确实会得到mscorlib抛出的System.InvalidProgramException
。Calling the
GetString
method requires an instance.I've simplified your code and made it into a SSCCE:
using System; using System.Reflection.Emit; using System.Text; class GetStringDemo { public static DynamicMethod GetStringForEncoding(Encoding encoding) { var getstringMethod = encoding.GetType().GetMethod("GetString", new Type[] { typeof(byte[]) }); var getStringCreator = new DynamicMethod("foo", typeof(string), new Type[] { typeof(byte[]), encoding.GetType() }, typeof(void)); ILGenerator gen = getStringCreator.GetILGenerator(); gen.Emit(OpCodes.Ldarg_1); // this is the instance for callvirt gen.Emit(OpCodes.Ldarg_0); gen.Emit(OpCodes.Callvirt, getstringMethod); gen.Emit(OpCodes.Box, typeof(string)); gen.Emit(OpCodes.Ret); return getStringCreator; } public static void Main() { var utf8 = Encoding.GetEncoding("utf-8"); var method = GetStringForEncoding(utf8); Console.WriteLine(method.Invoke(null, new object[2] { new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x32, 0x30, 0x31, 0x34, 0x21 }, utf8 } )); } } // Output: Hello 2014!
Load the actual invocation target before you call
h.ldarg_0 //Load array
. In its absence you'll indeed getSystem.InvalidProgramException
thrown by mscorlib.
相关问答
更多-
调用GetString方法需要一个实例。 我已经简化了你的代码并将它变成了一个SSCCE : using System; using System.Reflection.Emit; using System.Text; class GetStringDemo { public static DynamicMethod GetStringForEncoding(Encoding encoding) { var getstringMethod = encoding.GetType() ...
-
CLR实际上是为了能够完成运行Java所需的一切而设计的。 (事实上,在IL定义的方式中存在一些特殊的与Java兼容的方式)。您只需要将字节码转换为IL或从Java源代码编译为IL的方式。 J#是这样做的一种方式,但使用Java 1.1.4的限制是相当巨大的。 我怀疑没有进一步的原因不是将Java作为一种语言运行的问题,而是系统库需要移植的事实。 如果您愿意编写类似Java的源代码,但是将目标.NET框架库( 仅限 .NET框架库),以及将java.lang.String切换为System.String等的 ...
-
来自:( http://referencesource.microsoft.com/#mscorlib/system/reflection/emit/ilgenerator.cs,3e110f4a19d1c05e ) public virtual void Emit(OpCode opcode, MethodInfo meth) { //... if (opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opco ...
-
Ilgenerator:将默认初始化的System.Nullable推送到堆栈(Ilgenerator: push default initialized System.Nullable to Stack)[2022-06-21]
InitObj应该是: il.Emit(OpCodes.Initobj, objType); 来自MSDN : 以下Emit方法重载可以使用initobj操作码: ILGenerator.Emit(操作码,类型) 和il.Emit(OpCodes.Ldobj, objType); 可能是错误的...我需要看到整个生成的代码。 你需要加载这个 (这是一个ldarg.0 )的地方... 大概: var local = il.DeclareLocal(objType); il.Emit(OpCodes.Lda ... -
好吧,事实证明,在机器上重新安装.Net框架的人总是安装.net客户端配置文件版本。 卸载该版本并安装完整的.net 4版本解决了这个问题。 Ok it turns out that the person who was re-installing the .Net framework on the machines was always installing the .net client profile version. Uninstalling that version and installing ...
-
F#[
]导致无效程序(F# [ [2022-09-11]] causes Invalid Program) 从规格 ·右侧表达式必须是由以下任一组成的文字常量表达式: ·一个简单的常量表达式,除了(),本机整数文字,无符号本机整数文字,字节数组文字,BigInteger文字和用户定义的数字文字。 -要么- ·对另一个文字的引用。 所以我认为你的RHS不符合规范。 Neverthelss,我认为您应该收到更有用的错误消息。 这应该报告为fsbugs@microsoft.com的错误 From the spec · The right-hand side expression must be a literal co ... -
动态打字的编译语言(Compiled Language with Dynamic Typing)[2021-12-01]
动态类型语言的编译器只会生成在必要时检查类型的指令。 事实上,即使对于某些静态类型的语言,这有时也是必要的,例如,在面向对象的语言中使用经过检查的强制转换(如C ++中的dynamic_cast )。 在动态类型语言中,更频繁地需要它。 为了使这些检查成为可能,每个值都需要以跟踪其类型的方式表示。 在动态类型语言中表示值的常用方法是将它们表示为包含类型和值的结构的指针(作为优化,通常通过将整数直接存储为(足够小)整数来避免这种情况)无效指针(通过向左移动整数1并设置其最低有效位))。 A compiler ... -
这是来自示例应用程序的IL: .method public hidebysig virtual instance void OnEventConsumed(object sender, class [mscorlib]System.EventArgs e) cil managed { .maxstack 8 L_0000: nop L_0001: ldarg.0 L_0002: ldarg.1 L_0003: l ...
-
你的代码工作得很好,你只是忘了把OpCodes.Ret放到最后,看看有效的代码: public static void Main(string[] args) { var dynamicMethod = new DynamicMethod("PrintHello", typeof(void), null); var ilGenerator = dynamicMethod.GetILGenerator(); ilGenerator.Emit(OpCodes.Ldc_I4_1); ...
-
这看起来像是由于十进制类型的主键(1,0)。 This looks like it's due to a primary key of type decimal(1,0).