小编6op*_*puc的帖子

如何在ASP.NET MVC中使Controller成为每个应用程序的单个实例?

随着时间的推移,控制器会产生大量的依赖关系,并且为每个请求创建一个控制器实例会变得过于昂贵(特别是对于DI).是否有任何解决方案来制作控制器单例?

asp.net-mvc controller

9
推荐指数
2
解决办法
7335
查看次数

从本机函数(c ++,jni)返回一个int会导致应用程序崩溃

试图弄清楚为什么c ++函数调用返回一个int会崩溃整个应用程序而不会出现任何错误/警告.

这是工作代码:


    jint Java_org_ntorrent_DummyTorrentInfoProvider_next(
            JNIEnv * env, jobject obj, jint number)
    {
        jint test = rand();
        __android_log_print(ANDROID_LOG_DEBUG, "HelloNDK!", "rand() = %d", test);

        return number;
    }
Run Code Online (Sandbox Code Playgroud)

此代码在没有警告的情况下崩溃应用程序:


    jint Java_org_ntorrent_DummyTorrentInfoProvider_next(
            JNIEnv * env, jobject obj, jint number)
    {
        jint test = rand();
        __android_log_print(ANDROID_LOG_DEBUG, "HelloNDK!", "rand() = %d", test);

        return number + test;
    }
Run Code Online (Sandbox Code Playgroud)

在应用程序崩溃之前,我可以在log cat中看到我的日志消息(__ android_log_print)

编辑:即使我用"1"替换"数字+测试",应用程序仍然崩溃......它只有在我返回"数字"时才有效...

编辑#2:Java端代码:


package org.ntorrent;

import java.util.ArrayList;
import java.util.Random;

public class DummyTorrentInfoProvider implements TorrentInfoProvider {

    public native Integer next(Integer number);

    //public Integer next() { return _random.nextInt(); …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface android android-ndk

6
推荐指数
1
解决办法
1万
查看次数

即使没有根据,为什么不使用终结器收集对象?

我遇到了一个问题,即最终化的对象GC如果Dispose()未被显式调用则不会被收集.我知道Dispose()如果一个对象实现IDisposable,我应该显式调用,但我一直认为依赖框架是安全的,当一个对象变得未被引用时,它可以被收集.

但在使用windbg/sos/sosex进行一些实验后,我发现如果没有为可终结对象调用GC.SuppressFinalize(),它就不会被收集,即使它没有被引导.因此,如果您广泛使用可终结对象(DbConnection,FileStream等)并且未明确处理它们,则可能会遇到过高的内存消耗甚至OutOfMemoryException.

这是一个示例应用程序:

public class MemoryTest
{
    private HundredMegabyte hundred;

    public void Run()
    {
        Console.WriteLine("ready to attach");
        for (var i = 0; i < 100; i++)
        {
            Console.WriteLine("iteration #{0}", i + 1);
            hundred = new HundredMegabyte();
            Console.WriteLine("{0} object was initialized", hundred);
            Console.ReadKey();
            //hundred.Dispose();
            hundred = null;
        }
    }

    static void Main()
    {
        var test = new MemoryTest();
        test.Run();
    }
}

public class HundredMegabyte : IDisposable
{
    private readonly …
Run Code Online (Sandbox Code Playgroud)

.net c# garbage-collection

6
推荐指数
1
解决办法
695
查看次数